{
  "id": 422459,
  "title": "One Month Left! - A summary of everything that happened",
  "url": "/competitions/cafa-5-protein-function-prediction/discussion/422459",
  "author_name": "The Devastator",
  "post_date": "2023-07-10T05:30:50.223000",
  "votes": 49,
  "comment_count": 0,
  "views": 0,
  "content": "<h1>A summary of everything that happened up to this point!</h1>\n<p>One month left to the end of the competition!<br>\nA good time to look back and review everything that happened up to this point.</p>\n<p>I went through all discussion posts (Not with ChatGPT, I actually read everything) and compiled a summary of the the most interesting bits that can be found in the different discussions.</p>\n<p>Enjoy!</p>\n<blockquote>\n  <p>(yes.. this took a while.. 😅)</p>\n</blockquote>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405237\" target=\"_blank\">Information Accretion explainer</a> By <a href=\"https://www.kaggle.com/claradepaolis\" target=\"_blank\">Clara De Paolis</a></h5>\n<p>This post provides an explanation of the information accretion (IA) measure in protein function annotation.<br>\nIn short: IA measures how much information is added to an ontology annotation by a given node, considering its already annotated parents.</p>\n<p><strong>Some Key Points:</strong></p>\n<ul>\n<li>IA quantifies the information added to an ontology annotation by a specific node, given that its parents are already annotated.</li>\n<li>The calculation of IA involves comparing the probability of parent terms (Pr(<em>Pa(v)</em>)) with the probability of the specific node (Pr(<em>v</em>)).</li>\n<li>The probabilities are estimated using observed annotations in the dataset as an empirical distribution.</li>\n<li>There is also an <a href=\"https://github.com/claradepaolis/InformationAccretion\" target=\"_blank\">implemented calculation</a> of IA using empirical counts.</li>\n</ul>\n<p>Highly suggested read for those interested in understanding the domain knowledge behind the competition.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402565\" target=\"_blank\">Protein Language Models</a> By <a href=\"https://www.kaggle.com/thedrcat\" target=\"_blank\">Darek Kłeczek</a></h5>\n<p><strong>Important <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402565\" target=\"_blank\">topic</a> by <a href=\"https://www.kaggle.com/thedrcat\" target=\"_blank\">Darek Kłeczek</a>!</strong></p>\n<p>On this competition we are likley to use protein language models (Examples: <a href=\"https://github.com/facebookresearch/esm\" target=\"_blank\">ESM</a>, <a href=\"https://www.proteinea.com/our-innovations/ankh-pioneering-language-models\" target=\"_blank\">Ankh</a>).<br>\n<a href=\"https://www.kaggle.com/thedrcat\" target=\"_blank\">Darek Kłeczek</a> shares a <a href=\"https://wandb.ai/darek/protobert/reports/Training-a-Protein-Language-Model-on-Cloud-TPU--VmlldzoyNzg2NTgz\" target=\"_blank\">blog post</a> about this subjest.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406168\" target=\"_blank\">ESM2 final-layer embeddings</a> By <a href=\"https://www.kaggle.com/andreylalaley\" target=\"_blank\">andreylalaley</a></h5>\n<p><a href=\"https://www.kaggle.com/andreylalaley\" target=\"_blank\">andreylalaley_NAME</a> shares final-layer embeddings from multiple ESM2 models.<br>\nESM - Transformer protein language models from the Meta Fundamental AI Research Protein Team (FAIR). The post includes links to final-layer embeddings from five ESM variants:</p>\n<p>Model family on <a href=\"https://github.com/facebookresearch/esm?ysclid=lh4h7w4j2b979516370\" target=\"_blank\">github</a></p>\n<ul>\n<li><a href=\"https://www.kaggle.com/datasets/andreylalaley/315701375\" target=\"_blank\">esm2_t6_8M (embeding size = 320)</a></li>\n<li><a href=\"https://www.kaggle.com/datasets/andreylalaley/3023750\" target=\"_blank\">esm2_t12_35M (embeding size = 480)</a></li>\n<li><a href=\"https://www.kaggle.com/datasets/andreylalaley/8947923\" target=\"_blank\">esm2_t30_150M (embeding size = 640)</a></li>\n<li><a href=\"https://www.kaggle.com/datasets/andreylalaley/23468234\" target=\"_blank\">esm2_t33_650M (embeding size = 1280)</a></li>\n<li><a href=\"https://www.kaggle.com/datasets/andreylalaley/4637427\" target=\"_blank\">esm2_t36_3B (embeding size = 2560)</a></li>\n</ul>\n<p>Data creation <a href=\"https://www.kaggle.com/code/andreylalaley/esm-embeds-calculation\" target=\"_blank\">notebook</a>.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402696\" target=\"_blank\">Maybe we're not actually predicting protein function? </a> By <a href=\"https://www.kaggle.com/thedrcat\" target=\"_blank\">Darek Kłeczek</a></h5>\n<p><a href=\"https://www.kaggle.com/thedrcat\" target=\"_blank\">Darek Kłeczek</a> raises an concern that the competition's scoring system may inadvertently favor predicting which protein functions will be reported within the evaluation period, rather than accurately predicting protein functions themselves.</p>\n<p><strong>Opinions from the comments:</strong></p>\n<ul>\n<li>The \"incomplete knowledge problem\" has minor impact on CAFA evaluations over several years.</li>\n<li>The competition aims at predicting functions of unannotated proteins, evaluated against those acquiring functional annotations.</li>\n<li>The challenge is considered as Positive-Unlabeled learning, common in many fields.</li>\n<li>Optimizing predictions based on new annotations is difficult due to their scarcity.</li>\n<li>Proteins often have multiple functions, adding complexity to predictions.</li>\n<li>The biological knowledge basis, such as GO, is constantly revised and expanded.</li>\n</ul>\n<p>See more on the original post: A very interesting read.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402840\" target=\"_blank\">🧬 Graph Visualisation Kulyk 🧬</a> By <a href=\"https://www.kaggle.com/ihelon\" target=\"_blank\">Yaroslav Isaienkov</a></h5>\n<p>------------------------ START OF EXAMPLE SUMMARIES ------------------------</p>\n<ul>\n<li>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402840\" target=\"_blank\">post</a>,</li>\n</ul>\n<p><a href=\"https://www.kaggle.com/ihelon\" target=\"_blank\">Yaroslav Isaienkov</a> dropped an amazing plot you might want to try yourself!</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1313949%2Ff9726a776920fc16813d021068259a8e%2Fex%20(3).gif?generation=1681940906956477&amp;alt=media\" alt=\"\"></p>\n<p><strong>Code</strong></p>\n<pre><code>def plot_dag(graph, term, =1):\n    ng_graph = networkx.ego_graph(graph, term, =radius)\n     n  ng_graph.nodes(=):\n        n[1][] = .join(n[1][].split())\n        n[1][] = n[0]\n    nt = Network(=1000, =, =, =, =, =, =)\n    nt.from_nx(ng_graph)\n    return nt.show()\n</code></pre>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418295\" target=\"_blank\">Friday 07 July - research webinar.  Webinars and educational/research activity around the competition </a> By <a href=\"https://www.kaggle.com/alexandervc\" target=\"_blank\">Alexander Chervov</a></h5>\n<p><a href=\"https://www.kaggle.com/alexandervc\" target=\"_blank\">Alexander Chervov</a> shared a research webinar on ProDDG, a database of protein stability change upon mutation.</p>\n<p>Although not directly related to the CAFA5 challenge, the webinar may provide insights on how to apply the ideas to the competition, particularly in terms of data augmentation.</p>\n<p><strong>Links:</strong></p>\n<ul>\n<li><strong>\"A short review of methods used in CAFA challenges:</strong> <a href=\"https://www.youtube.com/watch?v=hpYfLLqyo9Y&amp;ab_channel=SciBerloga\" target=\"_blank\">video</a>, <a href=\"https://docs.google.com/presentation/d/1nxpFDVvxGb7F9uJ92swvNkXIUzzOm4Vi1qY1J0AoTUU/edit?pli=1#slide=id.p\" target=\"_blank\">presentation</a></li>\n<li><strong>\"Introduction to CAFA5 Protein function prediction Kaggle competition:</strong> <a href=\"https://www.youtube.com/watch?v=h4zTjPzPud4&amp;ab_channel=SciBerloga\" target=\"_blank\">video</a>, <a href=\"https://docs.google.com/presentation/d/1VrYMvJPlSrPd56pNXYm5PUylnMLEp9d0oMjcobOP47o/edit#slide=id.p\" target=\"_blank\">presentation</a></li>\n<li><strong>\"Introduction to CAFA5 Protein function prediction Kaggle competition:</strong> <a href=\"https://www.youtube.com/watch?v=h4zTjPzPud4&amp;ab_channel=SciBerloga\" target=\"_blank\">video</a>, <a href=\"https://docs.google.com/presentation/d/1VrYMvJPlSrPd56pNXYm5PUylnMLEp9d0oMjcobOP47o/edit#slide=id.p\" target=\"_blank\">presentation</a></li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/420241\" target=\"_blank\">(Probably) Error in the metric computation</a> By <a href=\"https://www.kaggle.com/btbpanda\" target=\"_blank\">Btbpanda</a></h5>\n<p>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/420241\" target=\"_blank\">post</a>, <a href=\"https://www.kaggle.com/btbpanda\" target=\"_blank\">Btbpanda</a> discovered a potential error in the metric implementation for the competition.</p>\n<p><strong>Comment (from the hosts):</strong> <code>I can confirm that it was affecting the evaluation of non-propagated predictions and those where parents were predicted with lower scores than their children. This bug had a significant impact on the dashboard, and I apologize for any inconvenience it may have caused.. ..The Kaggle team will now take over and recalculate the dashboard with the updated code.</code></p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402829\" target=\"_blank\">Predicting GO annotations beyond protein homology</a> By <a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a></h5>\n<p><a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a> shared a link to an approach developed by Burkhard Rost's lab that predicts GO annotations for proteins purely from their sequences (<a href=\"https://github.com/Rostlab/goPredSim\" target=\"_blank\">GitHub Link</a>).<br>\nThis lab also hosts a webserver that can directly predict GO annotations without the need to install language models (<a href=\"https://embed.protein.properties/\" target=\"_blank\">Webserver Link</a>).</p>\n<p><strong>From the comments:</strong></p>\n<ul>\n<li>The comments discuss some confusion around the three classifications in GO (Cellular Component, Molecular Function, Biological Process)</li>\n<li><a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a> proposes that proteins can be categorized into two groups: those that move and those that do not move, and explain how proteins can have different roles and activities even if they do not physically move.</li>\n<li>To read more, see <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403203\" target=\"_blank\">these</a> <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402842\" target=\"_blank\">posts</a></li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402580\" target=\"_blank\">What is a FASTA File and How To Read It</a> By <a href=\"https://www.kaggle.com/alejopaullier\" target=\"_blank\">moth</a></h5>\n<p>On this post we get a detailed explanation of what a FASTA file is and how to read it in Python. This is a very common file format used for biological sequences.</p>\n<p>Example of a FASTA file:</p>\n<blockquote>\n  <p>P20536 sp|P20536|UNG_VACCC Uracil-DNA glycosylase OS=Vaccinia virus (strain Copenhagen) OX=10249 GN=UNG PE=1 SV=1<br>\n  MNSVTVSHAPYTITYHDDWEPVMSQLVEFYNEVASWLLRDETSPIPDKFFIQLKQPLRNK<br>\n  RVCVCGIDPYPKDGTGVPFESPNFTKKSIKEIASSISRLTGVIDYKGYNLNIIDGVIPWN<br>\n  YYLSCKLGETKSHAIYWDKISKLLLQHITKHVSVLYCLGKTDFSNIRAKLESPVTTIVGY<br>\n  HPAARDRQFEKDRSFEIINVLLELDNKVPINWAQGFIY</p>\n</blockquote>\n<p><strong>How to read a FASTA file in Python</strong></p>\n<pre><code> Bio  SeqIO\n\nfilename = \nfasta_sequences = SeqIO.parse((filename),)\n\n fasta  fasta_sequences:\n    (fasta)\n    (, fasta.)\n    (, (fasta))\n    \n</code></pre>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402842\" target=\"_blank\">Levels of knowledge specificity</a> By <a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a></h5>\n<p>This post explains the levels of knowledge specificity in Gene Ontology (GO) annotations and draws a parallel with taxonomic classification of organisms.</p>\n<p><strong>The Key Points:</strong></p>\n<ul>\n<li>GO annotations represent different levels of knowledge about proteins, similar to taxonomic classification of organisms.</li>\n<li>Broad functional annotations have smaller GO numbers, while more specific functions have larger GO numbers.</li>\n<li>Taxonomic classification provides a hierarchy of categories, with higher levels being broad and lower levels being more specific.</li>\n<li>GO annotations work in a similar manner, where broad functional designations are easier to predict (small GO numbers) compared to specific molecular functions (larger GO numbers).</li>\n<li>Just as body parts can be classified at different levels (e.g., body part, left arm), protein functions can also be described at various levels of specificity.</li>\n<li>As the level of specificity increases, the subset of proteins involved in the function narrows down.</li>\n<li>The example of fine-motor skills demonstrates how specificity levels can be applied to both body parts and protein functions.</li>\n</ul>\n<p>Please refer to the post for more details and examples.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418006\" target=\"_blank\">EDA insights</a> By <a href=\"https://www.kaggle.com/thedrcat\" target=\"_blank\">Darek Kłeczek</a></h5>\n<p>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418006\" target=\"_blank\">post</a>, <a href=\"https://www.kaggle.com/thedrcat\" target=\"_blank\">Darek Kłeczek</a> shares their findings from conducting exploratory analysis on the competition data, along with some ideas for addressing the insights:</p>\n<ul>\n<li><strong>Choosing Labels for Prediction:</strong> The default approach is to choose the 1,500 most frequent nodes in the ontology graph as labels for prediction, but a more sophisticated approach could be explored.</li>\n<li><strong>Handling the Ontology Graph:</strong> The predictions are automatically propagated through the ontology DAG, so leveraging the graph structure could be beneficial for predictions.</li>\n<li><strong>Features for Predictions:</strong> While the default approach involves using protein language models encodings or sequence similarity, there are other features available in UniProtKB (e.g., taxonomy data) that could also be utilized.</li>\n<li><strong>Importance of Sequence Length:</strong> Sequences with very short or very long lengths (3 residues to 35,375 residues) may not be well represented by the LLMs. Considering how to handle these cases is important.</li>\n<li><strong>Handling the Long Tail:</strong> Label distributions show that there are frequent labels followed by a steep fall with a long tail of rare labels. Given the competition metric (information accretion), these rare labels could provide valuable insights.</li>\n<li><strong>Distribution Shift:</strong> New labels may differ from historical annotations, and there seems to be some differences between the train and test data. Certain species appear to have more representation in the test superset compared to the train data.</li>\n</ul>\n<p>See <a href=\"https://www.kaggle.com/code/thedrcat/cafa-5-protein-function-prediction-eda\" target=\"_blank\">notebook</a> for further exploration.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403200\" target=\"_blank\">test-train duplicates</a> By <a href=\"https://www.kaggle.com/sergeifironov\" target=\"_blank\">Sergei Fironov</a></h5>\n<ul>\n<li>The post addresses the issue of duplicated IDs between the train and test sets.</li>\n<li>The protein ID \"A0A1C3YKE0\" is discussed as an example, and it is mentioned that it has two GO annotations, but they do not have experimentally assigned evidence.</li>\n<li>It is clarified that only experimentally validated GO terms are scored.</li>\n</ul>\n<p><strong>From the comments:</strong></p>\n<ul>\n<li>Only proteins with new annotations will be included in the final test set.</li>\n<li>Another question is about the possibility of an annotation being removed if it is later found to be spurious, and if such removals will be included in the test set.</li>\n<li>The answer is in this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406914\" target=\"_blank\">link</a>.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405547\" target=\"_blank\">Similar Competition Winner Solutions  🏆</a> By <a href=\"https://www.kaggle.com/dwchen\" target=\"_blank\">Dewei Chen</a></h5>\n<p><strong>Comeptition: Open Problems - Multimodal Single-Cell Integration</strong></p>\n<p>1st solution: <a href=\"https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366961\" target=\"_blank\">here</a><br>\n2nd solution: <a href=\"https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366453\" target=\"_blank\">here</a><br>\n3rd solution: <a href=\"https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366428\" target=\"_blank\">here</a><br>\n4th solution: <a href=\"https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366460\" target=\"_blank\">here</a><br>\n5th solution: <a href=\"https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366409\" target=\"_blank\">here</a><br>\n6th solution: <a href=\"https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366417\" target=\"_blank\">here</a></p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402756\" target=\"_blank\">Protein Sequence Embedding Techniques (Resources)</a> By <a href=\"https://www.kaggle.com/ahsuna123\" target=\"_blank\">Anusha</a></h5>\n<p><strong>Title</strong>: Protein Sequence Embedding Techniques (Resources)</p>\n<p>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402756\" target=\"_blank\">post</a>, <a href=\"https://www.kaggle.com/ahsuna123\" target=\"_blank\">Anusha</a> shares a list of various embedding techniques used for protein sequences that have proven to be more efficient than typical one-hot encoding or Tokenizers.</p>\n<p><strong>List of techniques mentioned:</strong></p>\n<ol>\n<li>ProtVec (word2vec): Provides a continuous distributed representation of biological sequences for deep proteomics and genomics.<ul>\n<li><a href=\"https://arxiv.org/abs/1503.05140\" target=\"_blank\">Paper Link</a></li></ul></li>\n<li>SeqVec (ELMo): Models aspects of the language of life through transfer-learning protein sequences.<ul>\n<li><a href=\"https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-019-3220-8\" target=\"_blank\">Paper Link</a></li></ul></li>\n<li>ESM‐1b (Transformer): Transformer protein language models that learn unsupervised structure.<ul>\n<li><a href=\"https://openreview.net/pdf?id=fylclEqgvgd\" target=\"_blank\">Paper Link</a></li></ul></li>\n<li>ProtTrans (BERT): Utilizes self-supervised deep learning and high-performance computing to crack the language of life's code.<ul>\n<li><a href=\"https://arxiv.org/abs/2007.06225\" target=\"_blank\">Paper Link</a></li></ul></li>\n<li>UDSMProt (AWD‐LSTM): Universal deep sequence models for protein classification.<ul>\n<li><a href=\"https://academic.oup.com/bioinformatics/article/36/8/2401/5698270\" target=\"_blank\">Paper Link</a></li></ul></li>\n<li>UniRep (mLSTM): Enables unified rational protein engineering with sequence-based deep representation learning.<ul>\n<li><a href=\"https://www.nature.com/articles/s41592-019-0598-1\" target=\"_blank\">Paper Link</a></li></ul></li>\n</ol>\n<p><strong>Some more resources from the comments:</strong></p>\n<ul>\n<li><a href=\"https://www.kaggle.com/competitions/novozymes-enzyme-stability-prediction\" target=\"_blank\">Relevant Competition</a><br>\nA notebook about <a href=\"https://www.kaggle.com/code/cdeotte/prot-bert-finetune-lb-0-30\" target=\"_blank\">ProtBert</a></li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/404853\" target=\"_blank\">odd jump on the LB</a> By <a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a></h5>\n<p><strong>Important</strong></p>\n<p>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/404853\" target=\"_blank\">post</a>, <a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a> shares their observation of a strange jump in their submission score after adding quick-go annotations to their predictions for a set of proteins.</p>\n<p><strong>From the comments:</strong></p>\n<ul>\n<li>There is a correlation between tentative/computational predictions and real functions/annotations. It is suggested that using only quick-go annotations might lead to a decent placement in the competition.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406336\" target=\"_blank\">2D embedding of CAFA test proteins</a> By <a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a></h5>\n<ul>\n<li>A post by <a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a> showcases a t-SNE analysis of the CAFA test proteins using esm2_t30_150M_UR50D models provided by <a href=\"https://www.kaggle.com/andreylalaley\" target=\"_blank\">andreylalaley</a>.</li>\n<li>The t-SNE plot reveals clusters of proteins with uniform colors, indicating that there is at least partial sorting of proteins by function in the test data.</li>\n<li>In contrast, the same pattern is not observed in the t-SNE plot of the train data.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417561\" target=\"_blank\">SPROF-GO predictions</a> By <a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a></h5>\n<ul>\n<li>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417561\" target=\"_blank\">post</a>, <a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a> shares the output of running the SPROF-GO protein function prediction method on the test set.</li>\n<li>The program was run on Colab and the predictions can be found <a href=\"https://www.kaggle.com/code/mtinti/sprof-predictions/\" target=\"_blank\">here</a>.</li>\n<li>The LB score of this method was <strong>0.50148</strong>.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406914\" target=\"_blank\">At the final evaluation - annotations can only be ADDED  while existing (high-confident)  will be the same, or some can also \"disappear\"(not-confirmed) ?</a> By <a href=\"https://www.kaggle.com/alexandervc\" target=\"_blank\">Alexander Chervov</a></h5>\n<p><a href=\"https://www.kaggle.com/alexandervc\" target=\"_blank\">Alexander Chervov</a> Asks if at the final evaluation, only new annotations can be added to existing high-confidence ones, or if some high-confidence annotations can \"disappear\" if not confirmed by new experimental data.</p>\n<p><strong>In response:</strong></p>\n<p><a href=\"https://www.kaggle.com/iddux1\" target=\"_blank\">iddux1</a> states that theoretically, experimentally verified predictions may be retracted if there are errors in interpretation, redaction of papers, or new evidence that contradicts previous evidence.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/407162\" target=\"_blank\">ProtBERT Embeddings Dataset+Data Card 🔥</a> By <a href=\"https://www.kaggle.com/henriupton\" target=\"_blank\">Henri Upton</a></h5>\n<ul>\n<li><a href=\"https://www.kaggle.com/henriupton\" target=\"_blank\">Henri Upton</a> has shared a dataset on Kaggle containing <strong><a href=\"https://huggingface.co/Rostlab/prot_bert\" target=\"_blank\">ProtBERT</a>'s embedding vectors</strong> for the competition.</li>\n<li>The dataset can be found <a href=\"https://www.kaggle.com/datasets/henriupton/protbert-embeddings-for-cafa5\" target=\"_blank\">here</a>.</li>\n<li>The dataset data card provides detailed information on how to use these embeddings.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417784\" target=\"_blank\">Post Processing</a> By <a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a></h5>\n<ul>\n<li>In <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417784\" target=\"_blank\">this post</a>, <a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a> explores the importance of post-processing.</li>\n<li>With this effort the post processing tricks have managed to attain a score of 0.52856.</li>\n<li><a href=\"https://www.kaggle.com/code/mtinti/merge-datasets/notebook\" target=\"_blank\">notebook</a></li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403040\" target=\"_blank\">Info on CAFA4</a> By <a href=\"https://www.kaggle.com/biodav\" target=\"_blank\">biodav</a></h5>\n<ul>\n<li>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403040\" target=\"_blank\">post</a>, there is a discussion about the missing results of the CAFA4 and if there are any papers or preprints discussing the best methods used.</li>\n<li>The most information we have at the moment comes from <a href=\"https://www.kaggle.com/deweihu96\" target=\"_blank\">Dewei Hu</a> sharing some models they know: NetGO, deepgo, deepgraphgo, and deepnf.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405565\" target=\"_blank\">Why are the existing GO annotations so poor?</a> By <a href=\"https://www.kaggle.com/biodav\" target=\"_blank\">biodav</a></h5>\n<p>This discussion expresses concern about the quality of existing Gene Ontology (GO) annotations and its impact on the competition.</p>\n<ul>\n<li><p>They highlight the lack of experimental annotations, even for well-known proteins like myoglobin. They question why terms like \"heme binding\" are labeled as inferred from electronic annotation (IEA) when there is ample evidence from prior research demonstrating myoglobin's heme-binding capability.</p></li>\n<li><p>The author also raises questions about the reliability of the experimental terms, particularly those derived from high-throughput experiments, which may have significant error rates. They question the usefulness of a competition that relies on flawed training data where high-quality training data is historically not easily accessible, and the test set likely contains terms with potential errors.</p></li>\n<li><p>Responses from other competitors members provide additional insights, including the explanation that experimental evidence might be species-specific and dependent on direct experiments conducted on particular species. They also challenge the author's assertion about error rates in high-throughput experiments and emphasize the need for competitors to construct their own training sets.</p></li>\n</ul>\n<p>See full discussion for more details.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406573\" target=\"_blank\">How similar are train and test data?</a> By <a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a></h5>\n<p><a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a> explores the similarity between the train and test data in the protein function prediction competition.</p>\n<ul>\n<li>Using protein language model (pLM) embeddings the train and the test are visualized using t-SNE plots. The distributions appear to be very similar overall, with some differences observed.</li>\n<li>The train data shows areas with few or no train data points, particularly on the left side and lower quadrant.</li>\n<li>There is also a distinct group of points exclusively present in the train data, located just below the plot center, as well as a less prominent group in the upper right quadrant.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403258\" target=\"_blank\">Possible bug in evaluation code causing submission errors</a> By <a href=\"https://www.kaggle.com/raphey\" target=\"_blank\">Raphey Holmes</a></h5>\n<p>The post raises a concern: If a protein ID is not listed in the submitted file, it should be assumed that all predictions are 0.<br>\nHowever, it seems that submissions missing test rows can trigger a failure.</p>\n<p>But after some experimentation, the solution was to fill in the missing rows with values such as \"GO:0000001\" and \"0.123\": <strong>This allowed a previously failed submission to pass.</strong></p>\n<p><strong>Comment (from the hosts):</strong></p>\n<p>Confirming that if none of the targets overlap with the validation set, an exception is thrown by the program.<br>\nAlthough the notebook doesn't report the exception, you can all test it locally using the <a href=\"https://github.com/BioComputingUP/CAFA-evaluator\" target=\"_blank\">CAFA-evaluator</a> standalone version.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/413349\" target=\"_blank\">GO Term count analysis for helping class sampling</a> By <a href=\"https://www.kaggle.com/cafelatte1\" target=\"_blank\">Cafelatte1</a></h5>\n<p>In this post, an analysis showed in this post found a pattern similar to the Pareto Rule.<br>\nThe results indicate that focusing on the Molecular Function (MFO) category is better for evaluation. Although the number of unique MFO terms is less than others, the mean and max IA weight of MFO terms are larger.<br>\nTwo key results were shared in the post.</p>\n<ul>\n<li>The first result shows the cumulative count threshold for the total samples and the corresponding percentage of total GO Terms.</li>\n<li>The second result explores the IA weight distribution for different GO Terms.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405085\" target=\"_blank\">Q: The rationale behind the choice of GO termset for the training</a> By <a href=\"https://www.kaggle.com/igorrrr\" target=\"_blank\">Igor Pechersky</a></h5>\n<p><a href=\"https://www.kaggle.com/igorrrr\" target=\"_blank\">@iddux1</a> asks for an explanation of the rationale behind the choice of the GO termset for the training in this competition.</p>\n<ul>\n<li>Provides an example where the QuickGO annotations have more comprehensive and experimentally proven GO terms for a given protein than the list provided in <code>train_terms.tsv</code> for the same protein.</li>\n<li>Highlights that most of the terms in <code>train_terms.tsv</code> are from GeneOntology Central and have non-experimental evidence codes.</li>\n</ul>\n<p><strong>From the Comments:</strong><br>\nIn response, an official from the competition explains that they did not consider the IBA evidence code in the evaluation, and therefore, they omitted any annotations from <code>train_terms.tsv</code> that use the IBA evidence code.<br>\nThey state that they only included proteins with annotated terms that have been validated by experimental or high-throughput evidence, traceable author statement (evidence code TAS), or inferred by a curator (IC).</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405947\" target=\"_blank\">Small bug in test data: A0A1D6E0S8 appears twice</a> By <a href=\"https://www.kaggle.com/raphey\" target=\"_blank\">Raphey Holmes</a></h5>\n<p>This discussion highlights a duplicate entry in the test data.<br>\nIn general it is highly advised to check for duplicates in all datasets. Just in case.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409802\" target=\"_blank\">Data Augmentation Techniques</a> By <a href=\"https://www.kaggle.com/henriupton\" target=\"_blank\">Henri Upton</a></h5>\n<p>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409802\" target=\"_blank\">post</a> there is a discussion about using augmentations to the dataset. (Specifically: MixUp)</p>\n<p>Further on in the comments there is an interesting discussion about some augmentation techniques:</p>\n<ul>\n<li>Link: <a href=\"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9843584/\" target=\"_blank\">https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9843584/</a></li>\n<li>Link: <a href=\"https://www.biorxiv.org/content/10.1101/2023.02.22.529597v2\" target=\"_blank\">https://www.biorxiv.org/content/10.1101/2023.02.22.529597v2</a></li>\n<li>And BLAST (Basic Local Alignment Search Tool), which is a sequence alignment algorithm used to compare query sequences with a library or database of sequences.<br>\n<strong>The proposal:</strong></li>\n<li>Identify protein sequences that present quite rare GO terms (very sparse classes) : this would be our query sequences for BLAST =&gt; group (1)</li>\n<li>Proceed BLAST queries that will allow for each protein from group (1) to have very similar sequences of existing proteins =&gt; collect their respective sequences (can be done easily, possibility to directly download result sequences as fasta files)</li>\n<li>Use our favorite embedding pre-trained model (ProtBERT, T5, ESM2) to transform these new sequences into embedding vectors (must be same embedding space than one used for original training sequences)</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403166\" target=\"_blank\">Should we predict parents?</a> By <a href=\"https://www.kaggle.com/andrewrrose\" target=\"_blank\">Andrew</a></h5>\n<p>Two questions are raised in this post:</p>\n<blockquote>\n  <p>When making predictions, do we need to include all the parent GO terms of a term we specify or will they be automatically inferred for us from the child terms that we include?</p>\n</blockquote>\n<p><strong>Answer (from the hosts):</strong> They will be automatically inferred (or \"propagated\").</p>\n<blockquote>\n  <p>In the training/test data, if a protein is marked as having GO term X, is it guaranteed that all the parent, grandparent, etc. terms of X are also included for that protein? (If not, are we being asked to additionally predict which of the parent terms the annotator will have decided to include?)</p>\n</blockquote>\n<p><strong>Answer (from the hosts):</strong> A term is guaranteed to have all the parents. This is known as the True Path Rule.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405313\" target=\"_blank\">Notebook only submissions?</a> By <a href=\"https://www.kaggle.com/subachev\" target=\"_blank\">moo</a></h5>\n<p><strong>Question:</strong> If so, is it okay to develop/submit files from a file (uploaded to notebook, then submitted) so long as the final submission is computed by a notebook?</p>\n<p><strong>Answer:</strong></p>\n<blockquote>\n  <p>The notebook is actually just a wrapper for the submission file. It does not have to compute anything.<br>\n  <a href=\"https://www.kaggle.com/code/inversion/submitting-to-the-cafa-competition\" target=\"_blank\">https://www.kaggle.com/code/inversion/submitting-to-the-cafa-competition</a><br>\n  The important part is that the submitted notebook comes with a submission.tsv file (in the specified format).<br>\n  Whether this file is generated by the notebook or offline and then attached to it does not matter.</p>\n</blockquote>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409329\" target=\"_blank\">CV Grouping Strategy</a> By <a href=\"https://www.kaggle.com/subachev\" target=\"_blank\">moo</a></h5>\n<p>In this interesting <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409329\" target=\"_blank\">discussion</a>, the author points out that random CV splitting in popular notebooks can lead to an overconfident estimate of model performance since similar proteins can end up in both the train and validation sets.</p>\n<p><strong>There are serveral options discussed in the comments for CV strategy:</strong></p>\n<ul>\n<li>Grouping CV sets by keeping proteins clustered together based on mmseqs or embeddings.</li>\n<li>Groups and folds: <a href=\"https://www.kaggle.com/code/alexandervc/cafa5-23-groups-and-folds-diamond-igraph\" target=\"_blank\">notebook</a></li>\n<li>Important comment by <a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a>: The idea conceptually sound. The problem will likely arise in execution. some proteins will have many homologous sequences, and others will have none.</li>\n<li>[moo]() Attempted re splitting uniformly. Using the suggested clustering command on the mmseqs README:</li>\n</ul>\n<blockquote>\n  <p>mmseqs easy-cluster examples/DB.fasta clusterRes tmp --min-seq-id 0.5 -c 0.8 --cov-mode 1</p>\n</blockquote>\n<p><code>--cov-mode 1</code> should do clustering similarly to how you described above, which if I understood correctly should keep similar proteins together regardless of length.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F11298796%2F11bc4782c751744c88bdfbeec3d8ea9f%2FScreenshot%202023-05-12%20at%208.11.53%20AM.png?generation=1683904343421260&amp;alt=media\" alt=\"\"></p>\n<ul>\n<li><a href=\"https://www.kaggle.com/norixmb\" target=\"_blank\">Norix</a> also commented that most clustering algorithms only care about the \"uniqueness\" of the cluster representatives. This means that members of two different clusters might still be more similar than whatever threshold was used for the clustering of the representatives.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/419127\" target=\"_blank\">The metric is calculated with: prop_mode='fill' or prop_mode='max' ?</a> By <a href=\"https://www.kaggle.com/alexandervc\" target=\"_blank\">Alexander Chervov</a></h5>\n<p>There are two modes for the \"propagation\": one is \"fill\", another is \"max\":</p>\n<p><code>preds = pred_parser(preds, ontologies, gt, prop_mode='fill', max_terms=500)</code></p>\n<p><strong>Question:</strong> In the current competition the default mode \"fill\" is used , is it true?</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/407470\" target=\"_blank\">One question about weighted precision</a> By <a href=\"https://www.kaggle.com/andrewtsai0406\" target=\"_blank\">AndrewTsai</a></h5>\n<p>Question: Is the precision in weighted F-measures (for MF, BP, and CC) is always going to be one since there is no negative label but absent label?</p>\n<p><strong>Answer: (<a href=\"https://www.kaggle.com/thaweewatboy\" target=\"_blank\">Thaweewat R</a>)</strong></p>\n<blockquote>\n  <p>In the Positive-Unlabeled learning setup for this competition, the precision will not always be one. Predicting all 1500 GO terms for each test protein sequence would increase false positives, lowering precision. Instead, focus on developing a model that accurately identifies relevant GO terms while balancing precision and recall to achieve a high F-measure score.</p>\n</blockquote>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/411789\" target=\"_blank\">Introduction to Protein Sequences(Synthesis and Prediction) using BioPython</a> By <a href=\"https://www.kaggle.com/arunmunagala\" target=\"_blank\">Arun Munagala</a></h5>\n<ul>\n<li><a href=\"https://www.kaggle.com/arunmunagala\" target=\"_blank\">Arun Munagala</a> shares a notebook using Biopython for Protein Synthesis and Prediction.</li>\n<li><a href=\"https://www.kaggle.com/code/arunmunagala/protein-synthesis-and-clustering-with-biopython?scriptVersionId=130350951\" target=\"_blank\">notebook</a>.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403213\" target=\"_blank\">GO_terms_not_in_train</a> By <a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a></h5>\n<p>Important note by <a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a> regarding GO terms with high weights that do not appear in the training set.</p>\n<p><a href=\"https://www.kaggle.com/code/mtinti/go-terms-not-in-train/notebook?scriptVersionId=126704504\" target=\"_blank\">notebook</a></p>\n<p><strong>Explanation (From the hosts):</strong><br>\n&gt;</p>\n<blockquote>\n  <p>This is true. To explain why that happens, let's consider how IA is calculated</p>\n  <p>ia(v) = \\log_2 \\frac{1}{\\mathrm{Pr}(v|\\mathcal{Pa}(v))}<br>\n  We use the training set (train_terms.tsv) as the empirical distribution that approximates the denominator in this equation. Since it's an empirical distribution, we regularize counts by adding a count of 1 to every term. This will avoid dividing by 0 for unseen terms.</p>\n  <p>Let's sat term X doesn't appear in the training set and its IA is large. This means that there are many proteins in the dataset that are annotated with the parent term(s) of X,</p>\n  <p>ia(X) = \\log_2\\left(\\frac{\\text{number of proteins with parent term(s) of } X}{\\text{number of proteins with term } X}\\right)<br>\n  For some unseen X the denominator would be 0, but with our regularization it's 1. log_2(large number/1) = relatively large number.</p>\n  <p>For example, here is one term I just looked up. Term GO:2001081 does not appear in train_terms.tsv. It has one parent term (GO:0030247) which appears in 142 proteins in the training set. IA(GO:2001081)= 7.15987 = log_2( (142+1)/(0+1))</p>\n</blockquote>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403320\" target=\"_blank\">Obsolete IDs</a> By <a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a></h5>\n<p><a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a> is asking about a protein ID (A2RUG3) that is present only in the test set and now obsolete in UniProt. Can we eliminate such ids from our predictions?</p>\n<p><strong>Answer (From the hosts):</strong></p>\n<blockquote>\n  <p>We strongly recommend not excluding any IDs while generating predictions.</p>\n</blockquote>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405785\" target=\"_blank\">What is the difference between a 6-digit and a 10-digit EntryID (unique protein number)?</a> By <a href=\"https://www.kaggle.com/aesoptacit\" target=\"_blank\">Akki</a></h5>\n<p><strong>Answers Summary:</strong></p>\n<ul>\n<li>The primary difference between the 6-digit and 10-digit EntryIDs is the database they are associated with in UniProt.</li>\n<li>UniProt consists of two main sections: Swiss-Prot (6-digit) and TrEMBL (10-digit).</li>\n<li>TrEMBL contains computationally annotated protein sequences derived from coding sequences in nucleotide sequence databases, but they have not been manually reviewed and annotated by UniProt curators like Swiss-Prot entries.</li>\n<li>There is no hard rule dictating the length of the UniProt AC identifier. ACs in Swiss-Prot can be either 6 or 10 digits long.</li>\n<li>The length of the UniProt AC does not necessarily determine the status or age of the protein entry.</li>\n<li>Older entries tend to have 6-character ACs, which might have been manually checked and moved to Swiss-Prot, while newer entries may have 10-character ACs and might be part of TrEMBL.</li>\n<li>UniProt ACs started with O, P, or Q but later expanded to include all 26 letters, and then further extended to 10 characters.</li>\n<li>For the purposes of this competition, there is no practical difference between the 6-digit and 10-digit EntryIDs. The two identifiers are primarily used to understand the history and organization of protein entries in UniProt.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409962\" target=\"_blank\">'U' in the protein sequencies</a> By <a href=\"https://www.kaggle.com/aantonova\" target=\"_blank\">Ann Antonova</a></h5>\n<ul>\n<li>From the overview: \"Proteins are large molecules composed of **20 **types of building-blocks known as amino acids\". But some proteins contain 21 letters, including 'U'. What does it mean?</li>\n<li>X: some unusual and rare amino acid. The exact aa can be found in the text annotating the protein in swissprot. Those are typically so rare, that a single letter was never assigned to them.</li>\n<li>Z: either glutamic acid (E) or glutamine (Q)</li>\n<li>B: either aspartate (D) or asparagine (N)</li>\n<li>U stands for unknown. Sometimes during sequencing there are stretches of DNA bases that are not properly resolved, and N is used as a generic replacement for [A,T,C,G]. When such a DNA sequence is translated into a protein, there is no way to assign it a known amino-acid.</li>\n<li>X is unknown/any amino acid.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/415980\" target=\"_blank\">ESM2 fine-tuning baseline (LB=0.383)</a> By <a href=\"https://www.kaggle.com/mst8823\" target=\"_blank\">MST</a></h5>\n<p><a href=\"https://www.kaggle.com/mst8823\" target=\"_blank\">MST</a> shares a fine-tuning baseline for ESM2 <a href=\"https://www.kaggle.com/code/mst8823/cafa5-esm2-fine-tuning-baseline\" target=\"_blank\">link</a></p>\n<ul>\n<li>Fine-tuned on Colab Pro+ achieving a cv score of 0.4990 (Evaluation code provided by the hosts)</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417248\" target=\"_blank\">Competition Evaluation Metric. How is it calculated with respect to threshold value?</a> By <a href=\"https://www.kaggle.com/lequestion\" target=\"_blank\">Afolabi A</a></h5>\n<p><strong>Question:</strong> How is the evaluation metric calculated with respect to the threshold value (tau)?</p>\n<blockquote>\n  <p>How is the evaluation metric calculated with respect to tau?<br>\n  Is tau swept over a grid of vaules between 1 and 0, is tau a fixed number?</p>\n</blockquote>\n<p><strong>Answers (Comments):</strong></p>\n<ul>\n<li><a href=\"https://www.kaggle.com/code/sergeifironov/validate-ridge\" target=\"_blank\">https://www.kaggle.com/code/sergeifironov/validate-ridge</a></li>\n<li><a href=\"https://github.com/BioComputingUP/CAFA-evaluator\" target=\"_blank\">https://github.com/BioComputingUP/CAFA-evaluator</a></li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418456\" target=\"_blank\">The MFO imbalance problem</a> By <a href=\"https://www.kaggle.com/zmcxjt\" target=\"_blank\">ZXMKCD</a></h5>\n<p>Interesting insight: <a href=\"https://www.kaggle.com/zmcxjt\" target=\"_blank\">ZXMKCD</a> noticed that the local evaluations of BPO and CCO terms correlate well with the test set scores, but this is not the case for MFO terms.</p>\n<ul>\n<li>On this post, the author is unsure whether to trust their local evaluations or stick to the test evaluations, given the poor correlation for MFO terms.</li>\n</ul>\n<p>No answers yet..</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403058\" target=\"_blank\">About this competition?</a> By <a href=\"https://www.kaggle.com/yunsuxiaozi\" target=\"_blank\">yunsuxiaozi</a></h5>\n<p><a href=\"https://www.kaggle.com/yunsuxiaozi\" target=\"_blank\">yunsuxiaozi</a> asking about prior biology knowledge and how relevant it is for this competition.</p>\n<p><strong>Answer (From the hosts):</strong></p>\n<ul>\n<li>Suggested reading the following <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403203\" target=\"_blank\">link</a></li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405898\" target=\"_blank\">What does \"published\" mean for the test superset?</a> By <a href=\"https://www.kaggle.com/halfwit\" target=\"_blank\">h-wit</a></h5>\n<p><strong>Three clarifications on this post (from the hosts):</strong></p>\n<blockquote>\n  <p>Proteins having one or more of their functions published by researchers during the curation phase of the competition will comprise the future test set.</p>\n</blockquote>\n<p>That's a bit of a misnomer. It's not that the GO term will be published, but rather that the protein will have a database entry associated with that GO term using an experimental validation where there wasn't such an association before. As pointed out in other discussions, there are experimental annotations out there in the literature that were not curated yet into the database.</p>\n<blockquote>\n  <p>Eg, can someone look at conference abstracts/posters, dissertations, (or perhaps NIH grants, if that is available) to guess which proteins may soon be added?</p>\n</blockquote>\n<p>You have just described an ongoing effort for two decades of automated biocuratrion efforts. There is a whole body of literature on that, e.g. <a href=\"https://pubmed.ncbi.nlm.nih.gov/23514326/\" target=\"_blank\">https://pubmed.ncbi.nlm.nih.gov/23514326/</a></p>\n<blockquote>\n  <p>Is it considered valid in this competition to also do \"Information Extraction\"?</p>\n</blockquote>\n<p>You can use any information you like, as long as it's public, as elaborated in the Rules.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/407730\" target=\"_blank\">biological background</a> By <a href=\"https://www.kaggle.com/yassinezarwal\" target=\"_blank\">yassine zarwal</a></h5>\n<p>The question raised in this post is whether having a biological background or solid understanding is necessary for this competition.</p>\n<p><strong>Suggestions (In the comments):</strong></p>\n<ul>\n<li>Read papers on the subject and learn how researchers have implemented their models to solve similar problems.</li>\n<li>Explore discussions on the platform where useful resources are shared, and take the time to read them.</li>\n<li>Consider using language model embeddings, as they can provide valuable insights even without prior knowledge.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409952\" target=\"_blank\">How to Select the Best Protein Embedding Features in T5 and Other Feature Extraction Transformers?</a> By <a href=\"https://www.kaggle.com/lau01b\" target=\"_blank\">Capoo Cat</a></h5>\n<p><a href=\"https://www.kaggle.com/lau01b\" target=\"_blank\">Capoo Cat</a> is facing a problem where the accuracy of the model using T5 embedding feature data for proteins is stuck.</p>\n<ul>\n<li>Suggestions given by others:<ul>\n<li><strong>GO term imbalance</strong> There might be an imbalance in the GO term labels and sparsity of the target space. Suggested reweighting specific labels or balancing the set during training to avoid overfitting.</li>\n<li><strong>Label Correlation:</strong> Exploring solutions that incorporate label correlations, as GO terms are highly correlated in specific cases.</li>\n<li><strong>Fine-tuning T5 to your own needs:</strong> Suggested unfreezing layers of the T5 model to make it more flexible.</li></ul></li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/416745\" target=\"_blank\">How was the train set selected? Swiss-Prot vs TrEMBL and curated annotations.</a> By <a href=\"https://www.kaggle.com/thedrcat\" target=\"_blank\">Darek Kłeczek</a></h5>\n<p>In <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/416745\" target=\"_blank\">this post</a>, <a href=\"https://www.kaggle.com/thedrcat\" target=\"_blank\">Darek Kłeczek</a> raises a question about how the train set was selected for the competition.</p>\n<p><a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a> response that the answer could be found <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405085#2236274\" target=\"_blank\">here</a></p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418494\" target=\"_blank\">Use of GO prediction software</a> By <a href=\"https://www.kaggle.com/zmcxjt\" target=\"_blank\">ZXMKCD</a></h5>\n<p>For model building we can use published tools like BLAST, protein language models, and AlphaGO2 that predicts various biochemical aspects of proteins.<br>\nBut does this extend to models that directly predict protein GO terms if they are publicly available? Can we use the results of such models when creating our ensemble predictions for this competition?</p>\n<p><strong>Answer (From the hosts):</strong></p>\n<blockquote>\n  <p>In one word: yes. Be advised of the Winner License clause in the rules though.</p>\n</blockquote>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/419056\" target=\"_blank\">Finetune a LLM on 2 GPUs</a> By <a href=\"https://www.kaggle.com/simonveitner\" target=\"_blank\">Simon Veitner</a></h5>\n<p><strong>Finetune a LLM on 2 GPUs</strong></p>\n<p>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/419056\" target=\"_blank\">post</a>, <a href=\"https://www.kaggle.com/simonveitner\" target=\"_blank\">Simon Veitner</a> shared code for finetuning a protein language model on 2 GPUs.</p>\n<p>The LB score achieved from training on 1 fold without any finetuning is 0.329, but the post encourages others to tune hyperparameters, explore different models, and report any interesting findings or mistakes in the notebook.</p>\n<p>You can find the code <a href=\"https://www.kaggle.com/simonveitner/finetuning-on-2-gpus\" target=\"_blank\">here</a>.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/420931\" target=\"_blank\">Everything you need to know | CAFA Protein Prediction</a> By <a href=\"https://www.kaggle.com/ayushs9020\" target=\"_blank\">AyushS9020</a></h5>\n<p>This detailed discussion provides efficient resources for newcomers to catch up with the competition.<br>\nIt includes an advisory section, field knowledge, data, and a pre written DataLoader.</p>\n<p><strong>Highly suggested read</strong></p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406602\" target=\"_blank\">Impact of Different Protein structures on the Protein functioning</a> By <a href=\"https://www.kaggle.com/niti95\" target=\"_blank\">Niti95</a></h5>\n<p>This post raises some interesting questions:</p>\n<ul>\n<li>If Protein sequence is same but the structures(Secondary, Tertiary, Quarternary) are different then the function of the Protein changes.</li>\n<li>Do we have any information of these structure in the data?</li>\n<li>Do we have any information on which structure is the most important one to impact the protein functionig?</li>\n</ul>\n<p><strong>Answer (<a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a>):</strong></p>\n<ul>\n<li>A short answer to your question is that for this competition you probably don't need to worry about alternative protein structures.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409498\" target=\"_blank\">Feature Construction For Machine Learning Models</a> By <a href=\"https://www.kaggle.com/notsid\" target=\"_blank\">NotSid</a></h5>\n<p>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409498\" target=\"_blank\">post</a>, the author seeks guidance on how to construct features optimally for protein function prediction models using non-deep learning approaches.</p>\n<p><strong>Answers:</strong></p>\n<ul>\n<li>Embeddings from language models work well. Check out the links for more details. <a href=\"https://www.nature.com/articles/s41598-020-80786-0\" target=\"_blank\">link</a>, <a href=\"https://github.com/Rostlab/goPredSim\" target=\"_blank\">link</a></li>\n<li>Another option would be to use a transformer protein language model embeddings as features. <a href=\"https://www.kaggle.com/code/viktorfairuschin/esm-2-embeddings-starter\" target=\"_blank\">notebook</a> (Using <a href=\"https://github.com/facebookresearch/esm\" target=\"_blank\">ESM-2 embeddings</a> and <a href=\"https://www.kaggle.com/datasets/sergeifironov/t5embeds\" target=\"_blank\">this dataset</a>)</li>\n<li>Use TF-IDF to capture the statistics of the amino-acids that appear the most in the dataset.</li>\n</ul>",
  "messages": [
    {
      "id": 2337432,
      "postDate": "2023-07-10T05:30:50.223Z",
      "content": "<h1>A summary of everything that happened up to this point!</h1>\n<p>One month left to the end of the competition!<br>\nA good time to look back and review everything that happened up to this point.</p>\n<p>I went through all discussion posts (Not with ChatGPT, I actually read everything) and compiled a summary of the the most interesting bits that can be found in the different discussions.</p>\n<p>Enjoy!</p>\n<blockquote>\n  <p>(yes.. this took a while.. 😅)</p>\n</blockquote>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405237\" target=\"_blank\">Information Accretion explainer</a> By <a href=\"https://www.kaggle.com/claradepaolis\" target=\"_blank\">Clara De Paolis</a></h5>\n<p>This post provides an explanation of the information accretion (IA) measure in protein function annotation.<br>\nIn short: IA measures how much information is added to an ontology annotation by a given node, considering its already annotated parents.</p>\n<p><strong>Some Key Points:</strong></p>\n<ul>\n<li>IA quantifies the information added to an ontology annotation by a specific node, given that its parents are already annotated.</li>\n<li>The calculation of IA involves comparing the probability of parent terms (Pr(<em>Pa(v)</em>)) with the probability of the specific node (Pr(<em>v</em>)).</li>\n<li>The probabilities are estimated using observed annotations in the dataset as an empirical distribution.</li>\n<li>There is also an <a href=\"https://github.com/claradepaolis/InformationAccretion\" target=\"_blank\">implemented calculation</a> of IA using empirical counts.</li>\n</ul>\n<p>Highly suggested read for those interested in understanding the domain knowledge behind the competition.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402565\" target=\"_blank\">Protein Language Models</a> By <a href=\"https://www.kaggle.com/thedrcat\" target=\"_blank\">Darek Kłeczek</a></h5>\n<p><strong>Important <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402565\" target=\"_blank\">topic</a> by <a href=\"https://www.kaggle.com/thedrcat\" target=\"_blank\">Darek Kłeczek</a>!</strong></p>\n<p>On this competition we are likley to use protein language models (Examples: <a href=\"https://github.com/facebookresearch/esm\" target=\"_blank\">ESM</a>, <a href=\"https://www.proteinea.com/our-innovations/ankh-pioneering-language-models\" target=\"_blank\">Ankh</a>).<br>\n<a href=\"https://www.kaggle.com/thedrcat\" target=\"_blank\">Darek Kłeczek</a> shares a <a href=\"https://wandb.ai/darek/protobert/reports/Training-a-Protein-Language-Model-on-Cloud-TPU--VmlldzoyNzg2NTgz\" target=\"_blank\">blog post</a> about this subjest.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406168\" target=\"_blank\">ESM2 final-layer embeddings</a> By <a href=\"https://www.kaggle.com/andreylalaley\" target=\"_blank\">andreylalaley</a></h5>\n<p><a href=\"https://www.kaggle.com/andreylalaley\" target=\"_blank\">andreylalaley_NAME</a> shares final-layer embeddings from multiple ESM2 models.<br>\nESM - Transformer protein language models from the Meta Fundamental AI Research Protein Team (FAIR). The post includes links to final-layer embeddings from five ESM variants:</p>\n<p>Model family on <a href=\"https://github.com/facebookresearch/esm?ysclid=lh4h7w4j2b979516370\" target=\"_blank\">github</a></p>\n<ul>\n<li><a href=\"https://www.kaggle.com/datasets/andreylalaley/315701375\" target=\"_blank\">esm2_t6_8M (embeding size = 320)</a></li>\n<li><a href=\"https://www.kaggle.com/datasets/andreylalaley/3023750\" target=\"_blank\">esm2_t12_35M (embeding size = 480)</a></li>\n<li><a href=\"https://www.kaggle.com/datasets/andreylalaley/8947923\" target=\"_blank\">esm2_t30_150M (embeding size = 640)</a></li>\n<li><a href=\"https://www.kaggle.com/datasets/andreylalaley/23468234\" target=\"_blank\">esm2_t33_650M (embeding size = 1280)</a></li>\n<li><a href=\"https://www.kaggle.com/datasets/andreylalaley/4637427\" target=\"_blank\">esm2_t36_3B (embeding size = 2560)</a></li>\n</ul>\n<p>Data creation <a href=\"https://www.kaggle.com/code/andreylalaley/esm-embeds-calculation\" target=\"_blank\">notebook</a>.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402696\" target=\"_blank\">Maybe we're not actually predicting protein function? </a> By <a href=\"https://www.kaggle.com/thedrcat\" target=\"_blank\">Darek Kłeczek</a></h5>\n<p><a href=\"https://www.kaggle.com/thedrcat\" target=\"_blank\">Darek Kłeczek</a> raises an concern that the competition's scoring system may inadvertently favor predicting which protein functions will be reported within the evaluation period, rather than accurately predicting protein functions themselves.</p>\n<p><strong>Opinions from the comments:</strong></p>\n<ul>\n<li>The \"incomplete knowledge problem\" has minor impact on CAFA evaluations over several years.</li>\n<li>The competition aims at predicting functions of unannotated proteins, evaluated against those acquiring functional annotations.</li>\n<li>The challenge is considered as Positive-Unlabeled learning, common in many fields.</li>\n<li>Optimizing predictions based on new annotations is difficult due to their scarcity.</li>\n<li>Proteins often have multiple functions, adding complexity to predictions.</li>\n<li>The biological knowledge basis, such as GO, is constantly revised and expanded.</li>\n</ul>\n<p>See more on the original post: A very interesting read.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402840\" target=\"_blank\">🧬 Graph Visualisation Kulyk 🧬</a> By <a href=\"https://www.kaggle.com/ihelon\" target=\"_blank\">Yaroslav Isaienkov</a></h5>\n<p>------------------------ START OF EXAMPLE SUMMARIES ------------------------</p>\n<ul>\n<li>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402840\" target=\"_blank\">post</a>,</li>\n</ul>\n<p><a href=\"https://www.kaggle.com/ihelon\" target=\"_blank\">Yaroslav Isaienkov</a> dropped an amazing plot you might want to try yourself!</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1313949%2Ff9726a776920fc16813d021068259a8e%2Fex%20(3).gif?generation=1681940906956477&amp;alt=media\" alt=\"\"></p>\n<p><strong>Code</strong></p>\n<pre><code>def plot_dag(graph, term, =1):\n    ng_graph = networkx.ego_graph(graph, term, =radius)\n     n  ng_graph.nodes(=):\n        n[1][] = .join(n[1][].split())\n        n[1][] = n[0]\n    nt = Network(=1000, =, =, =, =, =, =)\n    nt.from_nx(ng_graph)\n    return nt.show()\n</code></pre>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418295\" target=\"_blank\">Friday 07 July - research webinar.  Webinars and educational/research activity around the competition </a> By <a href=\"https://www.kaggle.com/alexandervc\" target=\"_blank\">Alexander Chervov</a></h5>\n<p><a href=\"https://www.kaggle.com/alexandervc\" target=\"_blank\">Alexander Chervov</a> shared a research webinar on ProDDG, a database of protein stability change upon mutation.</p>\n<p>Although not directly related to the CAFA5 challenge, the webinar may provide insights on how to apply the ideas to the competition, particularly in terms of data augmentation.</p>\n<p><strong>Links:</strong></p>\n<ul>\n<li><strong>\"A short review of methods used in CAFA challenges:</strong> <a href=\"https://www.youtube.com/watch?v=hpYfLLqyo9Y&amp;ab_channel=SciBerloga\" target=\"_blank\">video</a>, <a href=\"https://docs.google.com/presentation/d/1nxpFDVvxGb7F9uJ92swvNkXIUzzOm4Vi1qY1J0AoTUU/edit?pli=1#slide=id.p\" target=\"_blank\">presentation</a></li>\n<li><strong>\"Introduction to CAFA5 Protein function prediction Kaggle competition:</strong> <a href=\"https://www.youtube.com/watch?v=h4zTjPzPud4&amp;ab_channel=SciBerloga\" target=\"_blank\">video</a>, <a href=\"https://docs.google.com/presentation/d/1VrYMvJPlSrPd56pNXYm5PUylnMLEp9d0oMjcobOP47o/edit#slide=id.p\" target=\"_blank\">presentation</a></li>\n<li><strong>\"Introduction to CAFA5 Protein function prediction Kaggle competition:</strong> <a href=\"https://www.youtube.com/watch?v=h4zTjPzPud4&amp;ab_channel=SciBerloga\" target=\"_blank\">video</a>, <a href=\"https://docs.google.com/presentation/d/1VrYMvJPlSrPd56pNXYm5PUylnMLEp9d0oMjcobOP47o/edit#slide=id.p\" target=\"_blank\">presentation</a></li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/420241\" target=\"_blank\">(Probably) Error in the metric computation</a> By <a href=\"https://www.kaggle.com/btbpanda\" target=\"_blank\">Btbpanda</a></h5>\n<p>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/420241\" target=\"_blank\">post</a>, <a href=\"https://www.kaggle.com/btbpanda\" target=\"_blank\">Btbpanda</a> discovered a potential error in the metric implementation for the competition.</p>\n<p><strong>Comment (from the hosts):</strong> <code>I can confirm that it was affecting the evaluation of non-propagated predictions and those where parents were predicted with lower scores than their children. This bug had a significant impact on the dashboard, and I apologize for any inconvenience it may have caused.. ..The Kaggle team will now take over and recalculate the dashboard with the updated code.</code></p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402829\" target=\"_blank\">Predicting GO annotations beyond protein homology</a> By <a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a></h5>\n<p><a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a> shared a link to an approach developed by Burkhard Rost's lab that predicts GO annotations for proteins purely from their sequences (<a href=\"https://github.com/Rostlab/goPredSim\" target=\"_blank\">GitHub Link</a>).<br>\nThis lab also hosts a webserver that can directly predict GO annotations without the need to install language models (<a href=\"https://embed.protein.properties/\" target=\"_blank\">Webserver Link</a>).</p>\n<p><strong>From the comments:</strong></p>\n<ul>\n<li>The comments discuss some confusion around the three classifications in GO (Cellular Component, Molecular Function, Biological Process)</li>\n<li><a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a> proposes that proteins can be categorized into two groups: those that move and those that do not move, and explain how proteins can have different roles and activities even if they do not physically move.</li>\n<li>To read more, see <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403203\" target=\"_blank\">these</a> <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402842\" target=\"_blank\">posts</a></li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402580\" target=\"_blank\">What is a FASTA File and How To Read It</a> By <a href=\"https://www.kaggle.com/alejopaullier\" target=\"_blank\">moth</a></h5>\n<p>On this post we get a detailed explanation of what a FASTA file is and how to read it in Python. This is a very common file format used for biological sequences.</p>\n<p>Example of a FASTA file:</p>\n<blockquote>\n  <p>P20536 sp|P20536|UNG_VACCC Uracil-DNA glycosylase OS=Vaccinia virus (strain Copenhagen) OX=10249 GN=UNG PE=1 SV=1<br>\n  MNSVTVSHAPYTITYHDDWEPVMSQLVEFYNEVASWLLRDETSPIPDKFFIQLKQPLRNK<br>\n  RVCVCGIDPYPKDGTGVPFESPNFTKKSIKEIASSISRLTGVIDYKGYNLNIIDGVIPWN<br>\n  YYLSCKLGETKSHAIYWDKISKLLLQHITKHVSVLYCLGKTDFSNIRAKLESPVTTIVGY<br>\n  HPAARDRQFEKDRSFEIINVLLELDNKVPINWAQGFIY</p>\n</blockquote>\n<p><strong>How to read a FASTA file in Python</strong></p>\n<pre><code> Bio  SeqIO\n\nfilename = \nfasta_sequences = SeqIO.parse((filename),)\n\n fasta  fasta_sequences:\n    (fasta)\n    (, fasta.)\n    (, (fasta))\n    \n</code></pre>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402842\" target=\"_blank\">Levels of knowledge specificity</a> By <a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a></h5>\n<p>This post explains the levels of knowledge specificity in Gene Ontology (GO) annotations and draws a parallel with taxonomic classification of organisms.</p>\n<p><strong>The Key Points:</strong></p>\n<ul>\n<li>GO annotations represent different levels of knowledge about proteins, similar to taxonomic classification of organisms.</li>\n<li>Broad functional annotations have smaller GO numbers, while more specific functions have larger GO numbers.</li>\n<li>Taxonomic classification provides a hierarchy of categories, with higher levels being broad and lower levels being more specific.</li>\n<li>GO annotations work in a similar manner, where broad functional designations are easier to predict (small GO numbers) compared to specific molecular functions (larger GO numbers).</li>\n<li>Just as body parts can be classified at different levels (e.g., body part, left arm), protein functions can also be described at various levels of specificity.</li>\n<li>As the level of specificity increases, the subset of proteins involved in the function narrows down.</li>\n<li>The example of fine-motor skills demonstrates how specificity levels can be applied to both body parts and protein functions.</li>\n</ul>\n<p>Please refer to the post for more details and examples.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418006\" target=\"_blank\">EDA insights</a> By <a href=\"https://www.kaggle.com/thedrcat\" target=\"_blank\">Darek Kłeczek</a></h5>\n<p>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418006\" target=\"_blank\">post</a>, <a href=\"https://www.kaggle.com/thedrcat\" target=\"_blank\">Darek Kłeczek</a> shares their findings from conducting exploratory analysis on the competition data, along with some ideas for addressing the insights:</p>\n<ul>\n<li><strong>Choosing Labels for Prediction:</strong> The default approach is to choose the 1,500 most frequent nodes in the ontology graph as labels for prediction, but a more sophisticated approach could be explored.</li>\n<li><strong>Handling the Ontology Graph:</strong> The predictions are automatically propagated through the ontology DAG, so leveraging the graph structure could be beneficial for predictions.</li>\n<li><strong>Features for Predictions:</strong> While the default approach involves using protein language models encodings or sequence similarity, there are other features available in UniProtKB (e.g., taxonomy data) that could also be utilized.</li>\n<li><strong>Importance of Sequence Length:</strong> Sequences with very short or very long lengths (3 residues to 35,375 residues) may not be well represented by the LLMs. Considering how to handle these cases is important.</li>\n<li><strong>Handling the Long Tail:</strong> Label distributions show that there are frequent labels followed by a steep fall with a long tail of rare labels. Given the competition metric (information accretion), these rare labels could provide valuable insights.</li>\n<li><strong>Distribution Shift:</strong> New labels may differ from historical annotations, and there seems to be some differences between the train and test data. Certain species appear to have more representation in the test superset compared to the train data.</li>\n</ul>\n<p>See <a href=\"https://www.kaggle.com/code/thedrcat/cafa-5-protein-function-prediction-eda\" target=\"_blank\">notebook</a> for further exploration.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403200\" target=\"_blank\">test-train duplicates</a> By <a href=\"https://www.kaggle.com/sergeifironov\" target=\"_blank\">Sergei Fironov</a></h5>\n<ul>\n<li>The post addresses the issue of duplicated IDs between the train and test sets.</li>\n<li>The protein ID \"A0A1C3YKE0\" is discussed as an example, and it is mentioned that it has two GO annotations, but they do not have experimentally assigned evidence.</li>\n<li>It is clarified that only experimentally validated GO terms are scored.</li>\n</ul>\n<p><strong>From the comments:</strong></p>\n<ul>\n<li>Only proteins with new annotations will be included in the final test set.</li>\n<li>Another question is about the possibility of an annotation being removed if it is later found to be spurious, and if such removals will be included in the test set.</li>\n<li>The answer is in this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406914\" target=\"_blank\">link</a>.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405547\" target=\"_blank\">Similar Competition Winner Solutions  🏆</a> By <a href=\"https://www.kaggle.com/dwchen\" target=\"_blank\">Dewei Chen</a></h5>\n<p><strong>Comeptition: Open Problems - Multimodal Single-Cell Integration</strong></p>\n<p>1st solution: <a href=\"https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366961\" target=\"_blank\">here</a><br>\n2nd solution: <a href=\"https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366453\" target=\"_blank\">here</a><br>\n3rd solution: <a href=\"https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366428\" target=\"_blank\">here</a><br>\n4th solution: <a href=\"https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366460\" target=\"_blank\">here</a><br>\n5th solution: <a href=\"https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366409\" target=\"_blank\">here</a><br>\n6th solution: <a href=\"https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366417\" target=\"_blank\">here</a></p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402756\" target=\"_blank\">Protein Sequence Embedding Techniques (Resources)</a> By <a href=\"https://www.kaggle.com/ahsuna123\" target=\"_blank\">Anusha</a></h5>\n<p><strong>Title</strong>: Protein Sequence Embedding Techniques (Resources)</p>\n<p>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402756\" target=\"_blank\">post</a>, <a href=\"https://www.kaggle.com/ahsuna123\" target=\"_blank\">Anusha</a> shares a list of various embedding techniques used for protein sequences that have proven to be more efficient than typical one-hot encoding or Tokenizers.</p>\n<p><strong>List of techniques mentioned:</strong></p>\n<ol>\n<li>ProtVec (word2vec): Provides a continuous distributed representation of biological sequences for deep proteomics and genomics.<ul>\n<li><a href=\"https://arxiv.org/abs/1503.05140\" target=\"_blank\">Paper Link</a></li></ul></li>\n<li>SeqVec (ELMo): Models aspects of the language of life through transfer-learning protein sequences.<ul>\n<li><a href=\"https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-019-3220-8\" target=\"_blank\">Paper Link</a></li></ul></li>\n<li>ESM‐1b (Transformer): Transformer protein language models that learn unsupervised structure.<ul>\n<li><a href=\"https://openreview.net/pdf?id=fylclEqgvgd\" target=\"_blank\">Paper Link</a></li></ul></li>\n<li>ProtTrans (BERT): Utilizes self-supervised deep learning and high-performance computing to crack the language of life's code.<ul>\n<li><a href=\"https://arxiv.org/abs/2007.06225\" target=\"_blank\">Paper Link</a></li></ul></li>\n<li>UDSMProt (AWD‐LSTM): Universal deep sequence models for protein classification.<ul>\n<li><a href=\"https://academic.oup.com/bioinformatics/article/36/8/2401/5698270\" target=\"_blank\">Paper Link</a></li></ul></li>\n<li>UniRep (mLSTM): Enables unified rational protein engineering with sequence-based deep representation learning.<ul>\n<li><a href=\"https://www.nature.com/articles/s41592-019-0598-1\" target=\"_blank\">Paper Link</a></li></ul></li>\n</ol>\n<p><strong>Some more resources from the comments:</strong></p>\n<ul>\n<li><a href=\"https://www.kaggle.com/competitions/novozymes-enzyme-stability-prediction\" target=\"_blank\">Relevant Competition</a><br>\nA notebook about <a href=\"https://www.kaggle.com/code/cdeotte/prot-bert-finetune-lb-0-30\" target=\"_blank\">ProtBert</a></li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/404853\" target=\"_blank\">odd jump on the LB</a> By <a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a></h5>\n<p><strong>Important</strong></p>\n<p>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/404853\" target=\"_blank\">post</a>, <a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a> shares their observation of a strange jump in their submission score after adding quick-go annotations to their predictions for a set of proteins.</p>\n<p><strong>From the comments:</strong></p>\n<ul>\n<li>There is a correlation between tentative/computational predictions and real functions/annotations. It is suggested that using only quick-go annotations might lead to a decent placement in the competition.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406336\" target=\"_blank\">2D embedding of CAFA test proteins</a> By <a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a></h5>\n<ul>\n<li>A post by <a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a> showcases a t-SNE analysis of the CAFA test proteins using esm2_t30_150M_UR50D models provided by <a href=\"https://www.kaggle.com/andreylalaley\" target=\"_blank\">andreylalaley</a>.</li>\n<li>The t-SNE plot reveals clusters of proteins with uniform colors, indicating that there is at least partial sorting of proteins by function in the test data.</li>\n<li>In contrast, the same pattern is not observed in the t-SNE plot of the train data.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417561\" target=\"_blank\">SPROF-GO predictions</a> By <a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a></h5>\n<ul>\n<li>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417561\" target=\"_blank\">post</a>, <a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a> shares the output of running the SPROF-GO protein function prediction method on the test set.</li>\n<li>The program was run on Colab and the predictions can be found <a href=\"https://www.kaggle.com/code/mtinti/sprof-predictions/\" target=\"_blank\">here</a>.</li>\n<li>The LB score of this method was <strong>0.50148</strong>.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406914\" target=\"_blank\">At the final evaluation - annotations can only be ADDED  while existing (high-confident)  will be the same, or some can also \"disappear\"(not-confirmed) ?</a> By <a href=\"https://www.kaggle.com/alexandervc\" target=\"_blank\">Alexander Chervov</a></h5>\n<p><a href=\"https://www.kaggle.com/alexandervc\" target=\"_blank\">Alexander Chervov</a> Asks if at the final evaluation, only new annotations can be added to existing high-confidence ones, or if some high-confidence annotations can \"disappear\" if not confirmed by new experimental data.</p>\n<p><strong>In response:</strong></p>\n<p><a href=\"https://www.kaggle.com/iddux1\" target=\"_blank\">iddux1</a> states that theoretically, experimentally verified predictions may be retracted if there are errors in interpretation, redaction of papers, or new evidence that contradicts previous evidence.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/407162\" target=\"_blank\">ProtBERT Embeddings Dataset+Data Card 🔥</a> By <a href=\"https://www.kaggle.com/henriupton\" target=\"_blank\">Henri Upton</a></h5>\n<ul>\n<li><a href=\"https://www.kaggle.com/henriupton\" target=\"_blank\">Henri Upton</a> has shared a dataset on Kaggle containing <strong><a href=\"https://huggingface.co/Rostlab/prot_bert\" target=\"_blank\">ProtBERT</a>'s embedding vectors</strong> for the competition.</li>\n<li>The dataset can be found <a href=\"https://www.kaggle.com/datasets/henriupton/protbert-embeddings-for-cafa5\" target=\"_blank\">here</a>.</li>\n<li>The dataset data card provides detailed information on how to use these embeddings.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417784\" target=\"_blank\">Post Processing</a> By <a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a></h5>\n<ul>\n<li>In <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417784\" target=\"_blank\">this post</a>, <a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a> explores the importance of post-processing.</li>\n<li>With this effort the post processing tricks have managed to attain a score of 0.52856.</li>\n<li><a href=\"https://www.kaggle.com/code/mtinti/merge-datasets/notebook\" target=\"_blank\">notebook</a></li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403040\" target=\"_blank\">Info on CAFA4</a> By <a href=\"https://www.kaggle.com/biodav\" target=\"_blank\">biodav</a></h5>\n<ul>\n<li>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403040\" target=\"_blank\">post</a>, there is a discussion about the missing results of the CAFA4 and if there are any papers or preprints discussing the best methods used.</li>\n<li>The most information we have at the moment comes from <a href=\"https://www.kaggle.com/deweihu96\" target=\"_blank\">Dewei Hu</a> sharing some models they know: NetGO, deepgo, deepgraphgo, and deepnf.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405565\" target=\"_blank\">Why are the existing GO annotations so poor?</a> By <a href=\"https://www.kaggle.com/biodav\" target=\"_blank\">biodav</a></h5>\n<p>This discussion expresses concern about the quality of existing Gene Ontology (GO) annotations and its impact on the competition.</p>\n<ul>\n<li><p>They highlight the lack of experimental annotations, even for well-known proteins like myoglobin. They question why terms like \"heme binding\" are labeled as inferred from electronic annotation (IEA) when there is ample evidence from prior research demonstrating myoglobin's heme-binding capability.</p></li>\n<li><p>The author also raises questions about the reliability of the experimental terms, particularly those derived from high-throughput experiments, which may have significant error rates. They question the usefulness of a competition that relies on flawed training data where high-quality training data is historically not easily accessible, and the test set likely contains terms with potential errors.</p></li>\n<li><p>Responses from other competitors members provide additional insights, including the explanation that experimental evidence might be species-specific and dependent on direct experiments conducted on particular species. They also challenge the author's assertion about error rates in high-throughput experiments and emphasize the need for competitors to construct their own training sets.</p></li>\n</ul>\n<p>See full discussion for more details.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406573\" target=\"_blank\">How similar are train and test data?</a> By <a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a></h5>\n<p><a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a> explores the similarity between the train and test data in the protein function prediction competition.</p>\n<ul>\n<li>Using protein language model (pLM) embeddings the train and the test are visualized using t-SNE plots. The distributions appear to be very similar overall, with some differences observed.</li>\n<li>The train data shows areas with few or no train data points, particularly on the left side and lower quadrant.</li>\n<li>There is also a distinct group of points exclusively present in the train data, located just below the plot center, as well as a less prominent group in the upper right quadrant.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403258\" target=\"_blank\">Possible bug in evaluation code causing submission errors</a> By <a href=\"https://www.kaggle.com/raphey\" target=\"_blank\">Raphey Holmes</a></h5>\n<p>The post raises a concern: If a protein ID is not listed in the submitted file, it should be assumed that all predictions are 0.<br>\nHowever, it seems that submissions missing test rows can trigger a failure.</p>\n<p>But after some experimentation, the solution was to fill in the missing rows with values such as \"GO:0000001\" and \"0.123\": <strong>This allowed a previously failed submission to pass.</strong></p>\n<p><strong>Comment (from the hosts):</strong></p>\n<p>Confirming that if none of the targets overlap with the validation set, an exception is thrown by the program.<br>\nAlthough the notebook doesn't report the exception, you can all test it locally using the <a href=\"https://github.com/BioComputingUP/CAFA-evaluator\" target=\"_blank\">CAFA-evaluator</a> standalone version.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/413349\" target=\"_blank\">GO Term count analysis for helping class sampling</a> By <a href=\"https://www.kaggle.com/cafelatte1\" target=\"_blank\">Cafelatte1</a></h5>\n<p>In this post, an analysis showed in this post found a pattern similar to the Pareto Rule.<br>\nThe results indicate that focusing on the Molecular Function (MFO) category is better for evaluation. Although the number of unique MFO terms is less than others, the mean and max IA weight of MFO terms are larger.<br>\nTwo key results were shared in the post.</p>\n<ul>\n<li>The first result shows the cumulative count threshold for the total samples and the corresponding percentage of total GO Terms.</li>\n<li>The second result explores the IA weight distribution for different GO Terms.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405085\" target=\"_blank\">Q: The rationale behind the choice of GO termset for the training</a> By <a href=\"https://www.kaggle.com/igorrrr\" target=\"_blank\">Igor Pechersky</a></h5>\n<p><a href=\"https://www.kaggle.com/igorrrr\" target=\"_blank\">@iddux1</a> asks for an explanation of the rationale behind the choice of the GO termset for the training in this competition.</p>\n<ul>\n<li>Provides an example where the QuickGO annotations have more comprehensive and experimentally proven GO terms for a given protein than the list provided in <code>train_terms.tsv</code> for the same protein.</li>\n<li>Highlights that most of the terms in <code>train_terms.tsv</code> are from GeneOntology Central and have non-experimental evidence codes.</li>\n</ul>\n<p><strong>From the Comments:</strong><br>\nIn response, an official from the competition explains that they did not consider the IBA evidence code in the evaluation, and therefore, they omitted any annotations from <code>train_terms.tsv</code> that use the IBA evidence code.<br>\nThey state that they only included proteins with annotated terms that have been validated by experimental or high-throughput evidence, traceable author statement (evidence code TAS), or inferred by a curator (IC).</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405947\" target=\"_blank\">Small bug in test data: A0A1D6E0S8 appears twice</a> By <a href=\"https://www.kaggle.com/raphey\" target=\"_blank\">Raphey Holmes</a></h5>\n<p>This discussion highlights a duplicate entry in the test data.<br>\nIn general it is highly advised to check for duplicates in all datasets. Just in case.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409802\" target=\"_blank\">Data Augmentation Techniques</a> By <a href=\"https://www.kaggle.com/henriupton\" target=\"_blank\">Henri Upton</a></h5>\n<p>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409802\" target=\"_blank\">post</a> there is a discussion about using augmentations to the dataset. (Specifically: MixUp)</p>\n<p>Further on in the comments there is an interesting discussion about some augmentation techniques:</p>\n<ul>\n<li>Link: <a href=\"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9843584/\" target=\"_blank\">https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9843584/</a></li>\n<li>Link: <a href=\"https://www.biorxiv.org/content/10.1101/2023.02.22.529597v2\" target=\"_blank\">https://www.biorxiv.org/content/10.1101/2023.02.22.529597v2</a></li>\n<li>And BLAST (Basic Local Alignment Search Tool), which is a sequence alignment algorithm used to compare query sequences with a library or database of sequences.<br>\n<strong>The proposal:</strong></li>\n<li>Identify protein sequences that present quite rare GO terms (very sparse classes) : this would be our query sequences for BLAST =&gt; group (1)</li>\n<li>Proceed BLAST queries that will allow for each protein from group (1) to have very similar sequences of existing proteins =&gt; collect their respective sequences (can be done easily, possibility to directly download result sequences as fasta files)</li>\n<li>Use our favorite embedding pre-trained model (ProtBERT, T5, ESM2) to transform these new sequences into embedding vectors (must be same embedding space than one used for original training sequences)</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403166\" target=\"_blank\">Should we predict parents?</a> By <a href=\"https://www.kaggle.com/andrewrrose\" target=\"_blank\">Andrew</a></h5>\n<p>Two questions are raised in this post:</p>\n<blockquote>\n  <p>When making predictions, do we need to include all the parent GO terms of a term we specify or will they be automatically inferred for us from the child terms that we include?</p>\n</blockquote>\n<p><strong>Answer (from the hosts):</strong> They will be automatically inferred (or \"propagated\").</p>\n<blockquote>\n  <p>In the training/test data, if a protein is marked as having GO term X, is it guaranteed that all the parent, grandparent, etc. terms of X are also included for that protein? (If not, are we being asked to additionally predict which of the parent terms the annotator will have decided to include?)</p>\n</blockquote>\n<p><strong>Answer (from the hosts):</strong> A term is guaranteed to have all the parents. This is known as the True Path Rule.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405313\" target=\"_blank\">Notebook only submissions?</a> By <a href=\"https://www.kaggle.com/subachev\" target=\"_blank\">moo</a></h5>\n<p><strong>Question:</strong> If so, is it okay to develop/submit files from a file (uploaded to notebook, then submitted) so long as the final submission is computed by a notebook?</p>\n<p><strong>Answer:</strong></p>\n<blockquote>\n  <p>The notebook is actually just a wrapper for the submission file. It does not have to compute anything.<br>\n  <a href=\"https://www.kaggle.com/code/inversion/submitting-to-the-cafa-competition\" target=\"_blank\">https://www.kaggle.com/code/inversion/submitting-to-the-cafa-competition</a><br>\n  The important part is that the submitted notebook comes with a submission.tsv file (in the specified format).<br>\n  Whether this file is generated by the notebook or offline and then attached to it does not matter.</p>\n</blockquote>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409329\" target=\"_blank\">CV Grouping Strategy</a> By <a href=\"https://www.kaggle.com/subachev\" target=\"_blank\">moo</a></h5>\n<p>In this interesting <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409329\" target=\"_blank\">discussion</a>, the author points out that random CV splitting in popular notebooks can lead to an overconfident estimate of model performance since similar proteins can end up in both the train and validation sets.</p>\n<p><strong>There are serveral options discussed in the comments for CV strategy:</strong></p>\n<ul>\n<li>Grouping CV sets by keeping proteins clustered together based on mmseqs or embeddings.</li>\n<li>Groups and folds: <a href=\"https://www.kaggle.com/code/alexandervc/cafa5-23-groups-and-folds-diamond-igraph\" target=\"_blank\">notebook</a></li>\n<li>Important comment by <a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a>: The idea conceptually sound. The problem will likely arise in execution. some proteins will have many homologous sequences, and others will have none.</li>\n<li>[moo]() Attempted re splitting uniformly. Using the suggested clustering command on the mmseqs README:</li>\n</ul>\n<blockquote>\n  <p>mmseqs easy-cluster examples/DB.fasta clusterRes tmp --min-seq-id 0.5 -c 0.8 --cov-mode 1</p>\n</blockquote>\n<p><code>--cov-mode 1</code> should do clustering similarly to how you described above, which if I understood correctly should keep similar proteins together regardless of length.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F11298796%2F11bc4782c751744c88bdfbeec3d8ea9f%2FScreenshot%202023-05-12%20at%208.11.53%20AM.png?generation=1683904343421260&amp;alt=media\" alt=\"\"></p>\n<ul>\n<li><a href=\"https://www.kaggle.com/norixmb\" target=\"_blank\">Norix</a> also commented that most clustering algorithms only care about the \"uniqueness\" of the cluster representatives. This means that members of two different clusters might still be more similar than whatever threshold was used for the clustering of the representatives.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/419127\" target=\"_blank\">The metric is calculated with: prop_mode='fill' or prop_mode='max' ?</a> By <a href=\"https://www.kaggle.com/alexandervc\" target=\"_blank\">Alexander Chervov</a></h5>\n<p>There are two modes for the \"propagation\": one is \"fill\", another is \"max\":</p>\n<p><code>preds = pred_parser(preds, ontologies, gt, prop_mode='fill', max_terms=500)</code></p>\n<p><strong>Question:</strong> In the current competition the default mode \"fill\" is used , is it true?</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/407470\" target=\"_blank\">One question about weighted precision</a> By <a href=\"https://www.kaggle.com/andrewtsai0406\" target=\"_blank\">AndrewTsai</a></h5>\n<p>Question: Is the precision in weighted F-measures (for MF, BP, and CC) is always going to be one since there is no negative label but absent label?</p>\n<p><strong>Answer: (<a href=\"https://www.kaggle.com/thaweewatboy\" target=\"_blank\">Thaweewat R</a>)</strong></p>\n<blockquote>\n  <p>In the Positive-Unlabeled learning setup for this competition, the precision will not always be one. Predicting all 1500 GO terms for each test protein sequence would increase false positives, lowering precision. Instead, focus on developing a model that accurately identifies relevant GO terms while balancing precision and recall to achieve a high F-measure score.</p>\n</blockquote>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/411789\" target=\"_blank\">Introduction to Protein Sequences(Synthesis and Prediction) using BioPython</a> By <a href=\"https://www.kaggle.com/arunmunagala\" target=\"_blank\">Arun Munagala</a></h5>\n<ul>\n<li><a href=\"https://www.kaggle.com/arunmunagala\" target=\"_blank\">Arun Munagala</a> shares a notebook using Biopython for Protein Synthesis and Prediction.</li>\n<li><a href=\"https://www.kaggle.com/code/arunmunagala/protein-synthesis-and-clustering-with-biopython?scriptVersionId=130350951\" target=\"_blank\">notebook</a>.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403213\" target=\"_blank\">GO_terms_not_in_train</a> By <a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a></h5>\n<p>Important note by <a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a> regarding GO terms with high weights that do not appear in the training set.</p>\n<p><a href=\"https://www.kaggle.com/code/mtinti/go-terms-not-in-train/notebook?scriptVersionId=126704504\" target=\"_blank\">notebook</a></p>\n<p><strong>Explanation (From the hosts):</strong><br>\n&gt;</p>\n<blockquote>\n  <p>This is true. To explain why that happens, let's consider how IA is calculated</p>\n  <p>ia(v) = \\log_2 \\frac{1}{\\mathrm{Pr}(v|\\mathcal{Pa}(v))}<br>\n  We use the training set (train_terms.tsv) as the empirical distribution that approximates the denominator in this equation. Since it's an empirical distribution, we regularize counts by adding a count of 1 to every term. This will avoid dividing by 0 for unseen terms.</p>\n  <p>Let's sat term X doesn't appear in the training set and its IA is large. This means that there are many proteins in the dataset that are annotated with the parent term(s) of X,</p>\n  <p>ia(X) = \\log_2\\left(\\frac{\\text{number of proteins with parent term(s) of } X}{\\text{number of proteins with term } X}\\right)<br>\n  For some unseen X the denominator would be 0, but with our regularization it's 1. log_2(large number/1) = relatively large number.</p>\n  <p>For example, here is one term I just looked up. Term GO:2001081 does not appear in train_terms.tsv. It has one parent term (GO:0030247) which appears in 142 proteins in the training set. IA(GO:2001081)= 7.15987 = log_2( (142+1)/(0+1))</p>\n</blockquote>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403320\" target=\"_blank\">Obsolete IDs</a> By <a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a></h5>\n<p><a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a> is asking about a protein ID (A2RUG3) that is present only in the test set and now obsolete in UniProt. Can we eliminate such ids from our predictions?</p>\n<p><strong>Answer (From the hosts):</strong></p>\n<blockquote>\n  <p>We strongly recommend not excluding any IDs while generating predictions.</p>\n</blockquote>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405785\" target=\"_blank\">What is the difference between a 6-digit and a 10-digit EntryID (unique protein number)?</a> By <a href=\"https://www.kaggle.com/aesoptacit\" target=\"_blank\">Akki</a></h5>\n<p><strong>Answers Summary:</strong></p>\n<ul>\n<li>The primary difference between the 6-digit and 10-digit EntryIDs is the database they are associated with in UniProt.</li>\n<li>UniProt consists of two main sections: Swiss-Prot (6-digit) and TrEMBL (10-digit).</li>\n<li>TrEMBL contains computationally annotated protein sequences derived from coding sequences in nucleotide sequence databases, but they have not been manually reviewed and annotated by UniProt curators like Swiss-Prot entries.</li>\n<li>There is no hard rule dictating the length of the UniProt AC identifier. ACs in Swiss-Prot can be either 6 or 10 digits long.</li>\n<li>The length of the UniProt AC does not necessarily determine the status or age of the protein entry.</li>\n<li>Older entries tend to have 6-character ACs, which might have been manually checked and moved to Swiss-Prot, while newer entries may have 10-character ACs and might be part of TrEMBL.</li>\n<li>UniProt ACs started with O, P, or Q but later expanded to include all 26 letters, and then further extended to 10 characters.</li>\n<li>For the purposes of this competition, there is no practical difference between the 6-digit and 10-digit EntryIDs. The two identifiers are primarily used to understand the history and organization of protein entries in UniProt.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409962\" target=\"_blank\">'U' in the protein sequencies</a> By <a href=\"https://www.kaggle.com/aantonova\" target=\"_blank\">Ann Antonova</a></h5>\n<ul>\n<li>From the overview: \"Proteins are large molecules composed of **20 **types of building-blocks known as amino acids\". But some proteins contain 21 letters, including 'U'. What does it mean?</li>\n<li>X: some unusual and rare amino acid. The exact aa can be found in the text annotating the protein in swissprot. Those are typically so rare, that a single letter was never assigned to them.</li>\n<li>Z: either glutamic acid (E) or glutamine (Q)</li>\n<li>B: either aspartate (D) or asparagine (N)</li>\n<li>U stands for unknown. Sometimes during sequencing there are stretches of DNA bases that are not properly resolved, and N is used as a generic replacement for [A,T,C,G]. When such a DNA sequence is translated into a protein, there is no way to assign it a known amino-acid.</li>\n<li>X is unknown/any amino acid.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/415980\" target=\"_blank\">ESM2 fine-tuning baseline (LB=0.383)</a> By <a href=\"https://www.kaggle.com/mst8823\" target=\"_blank\">MST</a></h5>\n<p><a href=\"https://www.kaggle.com/mst8823\" target=\"_blank\">MST</a> shares a fine-tuning baseline for ESM2 <a href=\"https://www.kaggle.com/code/mst8823/cafa5-esm2-fine-tuning-baseline\" target=\"_blank\">link</a></p>\n<ul>\n<li>Fine-tuned on Colab Pro+ achieving a cv score of 0.4990 (Evaluation code provided by the hosts)</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417248\" target=\"_blank\">Competition Evaluation Metric. How is it calculated with respect to threshold value?</a> By <a href=\"https://www.kaggle.com/lequestion\" target=\"_blank\">Afolabi A</a></h5>\n<p><strong>Question:</strong> How is the evaluation metric calculated with respect to the threshold value (tau)?</p>\n<blockquote>\n  <p>How is the evaluation metric calculated with respect to tau?<br>\n  Is tau swept over a grid of vaules between 1 and 0, is tau a fixed number?</p>\n</blockquote>\n<p><strong>Answers (Comments):</strong></p>\n<ul>\n<li><a href=\"https://www.kaggle.com/code/sergeifironov/validate-ridge\" target=\"_blank\">https://www.kaggle.com/code/sergeifironov/validate-ridge</a></li>\n<li><a href=\"https://github.com/BioComputingUP/CAFA-evaluator\" target=\"_blank\">https://github.com/BioComputingUP/CAFA-evaluator</a></li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418456\" target=\"_blank\">The MFO imbalance problem</a> By <a href=\"https://www.kaggle.com/zmcxjt\" target=\"_blank\">ZXMKCD</a></h5>\n<p>Interesting insight: <a href=\"https://www.kaggle.com/zmcxjt\" target=\"_blank\">ZXMKCD</a> noticed that the local evaluations of BPO and CCO terms correlate well with the test set scores, but this is not the case for MFO terms.</p>\n<ul>\n<li>On this post, the author is unsure whether to trust their local evaluations or stick to the test evaluations, given the poor correlation for MFO terms.</li>\n</ul>\n<p>No answers yet..</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403058\" target=\"_blank\">About this competition?</a> By <a href=\"https://www.kaggle.com/yunsuxiaozi\" target=\"_blank\">yunsuxiaozi</a></h5>\n<p><a href=\"https://www.kaggle.com/yunsuxiaozi\" target=\"_blank\">yunsuxiaozi</a> asking about prior biology knowledge and how relevant it is for this competition.</p>\n<p><strong>Answer (From the hosts):</strong></p>\n<ul>\n<li>Suggested reading the following <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403203\" target=\"_blank\">link</a></li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405898\" target=\"_blank\">What does \"published\" mean for the test superset?</a> By <a href=\"https://www.kaggle.com/halfwit\" target=\"_blank\">h-wit</a></h5>\n<p><strong>Three clarifications on this post (from the hosts):</strong></p>\n<blockquote>\n  <p>Proteins having one or more of their functions published by researchers during the curation phase of the competition will comprise the future test set.</p>\n</blockquote>\n<p>That's a bit of a misnomer. It's not that the GO term will be published, but rather that the protein will have a database entry associated with that GO term using an experimental validation where there wasn't such an association before. As pointed out in other discussions, there are experimental annotations out there in the literature that were not curated yet into the database.</p>\n<blockquote>\n  <p>Eg, can someone look at conference abstracts/posters, dissertations, (or perhaps NIH grants, if that is available) to guess which proteins may soon be added?</p>\n</blockquote>\n<p>You have just described an ongoing effort for two decades of automated biocuratrion efforts. There is a whole body of literature on that, e.g. <a href=\"https://pubmed.ncbi.nlm.nih.gov/23514326/\" target=\"_blank\">https://pubmed.ncbi.nlm.nih.gov/23514326/</a></p>\n<blockquote>\n  <p>Is it considered valid in this competition to also do \"Information Extraction\"?</p>\n</blockquote>\n<p>You can use any information you like, as long as it's public, as elaborated in the Rules.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/407730\" target=\"_blank\">biological background</a> By <a href=\"https://www.kaggle.com/yassinezarwal\" target=\"_blank\">yassine zarwal</a></h5>\n<p>The question raised in this post is whether having a biological background or solid understanding is necessary for this competition.</p>\n<p><strong>Suggestions (In the comments):</strong></p>\n<ul>\n<li>Read papers on the subject and learn how researchers have implemented their models to solve similar problems.</li>\n<li>Explore discussions on the platform where useful resources are shared, and take the time to read them.</li>\n<li>Consider using language model embeddings, as they can provide valuable insights even without prior knowledge.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409952\" target=\"_blank\">How to Select the Best Protein Embedding Features in T5 and Other Feature Extraction Transformers?</a> By <a href=\"https://www.kaggle.com/lau01b\" target=\"_blank\">Capoo Cat</a></h5>\n<p><a href=\"https://www.kaggle.com/lau01b\" target=\"_blank\">Capoo Cat</a> is facing a problem where the accuracy of the model using T5 embedding feature data for proteins is stuck.</p>\n<ul>\n<li>Suggestions given by others:<ul>\n<li><strong>GO term imbalance</strong> There might be an imbalance in the GO term labels and sparsity of the target space. Suggested reweighting specific labels or balancing the set during training to avoid overfitting.</li>\n<li><strong>Label Correlation:</strong> Exploring solutions that incorporate label correlations, as GO terms are highly correlated in specific cases.</li>\n<li><strong>Fine-tuning T5 to your own needs:</strong> Suggested unfreezing layers of the T5 model to make it more flexible.</li></ul></li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/416745\" target=\"_blank\">How was the train set selected? Swiss-Prot vs TrEMBL and curated annotations.</a> By <a href=\"https://www.kaggle.com/thedrcat\" target=\"_blank\">Darek Kłeczek</a></h5>\n<p>In <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/416745\" target=\"_blank\">this post</a>, <a href=\"https://www.kaggle.com/thedrcat\" target=\"_blank\">Darek Kłeczek</a> raises a question about how the train set was selected for the competition.</p>\n<p><a href=\"https://www.kaggle.com/mtinti\" target=\"_blank\">MT</a> response that the answer could be found <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405085#2236274\" target=\"_blank\">here</a></p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418494\" target=\"_blank\">Use of GO prediction software</a> By <a href=\"https://www.kaggle.com/zmcxjt\" target=\"_blank\">ZXMKCD</a></h5>\n<p>For model building we can use published tools like BLAST, protein language models, and AlphaGO2 that predicts various biochemical aspects of proteins.<br>\nBut does this extend to models that directly predict protein GO terms if they are publicly available? Can we use the results of such models when creating our ensemble predictions for this competition?</p>\n<p><strong>Answer (From the hosts):</strong></p>\n<blockquote>\n  <p>In one word: yes. Be advised of the Winner License clause in the rules though.</p>\n</blockquote>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/419056\" target=\"_blank\">Finetune a LLM on 2 GPUs</a> By <a href=\"https://www.kaggle.com/simonveitner\" target=\"_blank\">Simon Veitner</a></h5>\n<p><strong>Finetune a LLM on 2 GPUs</strong></p>\n<p>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/419056\" target=\"_blank\">post</a>, <a href=\"https://www.kaggle.com/simonveitner\" target=\"_blank\">Simon Veitner</a> shared code for finetuning a protein language model on 2 GPUs.</p>\n<p>The LB score achieved from training on 1 fold without any finetuning is 0.329, but the post encourages others to tune hyperparameters, explore different models, and report any interesting findings or mistakes in the notebook.</p>\n<p>You can find the code <a href=\"https://www.kaggle.com/simonveitner/finetuning-on-2-gpus\" target=\"_blank\">here</a>.</p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/420931\" target=\"_blank\">Everything you need to know | CAFA Protein Prediction</a> By <a href=\"https://www.kaggle.com/ayushs9020\" target=\"_blank\">AyushS9020</a></h5>\n<p>This detailed discussion provides efficient resources for newcomers to catch up with the competition.<br>\nIt includes an advisory section, field knowledge, data, and a pre written DataLoader.</p>\n<p><strong>Highly suggested read</strong></p>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406602\" target=\"_blank\">Impact of Different Protein structures on the Protein functioning</a> By <a href=\"https://www.kaggle.com/niti95\" target=\"_blank\">Niti95</a></h5>\n<p>This post raises some interesting questions:</p>\n<ul>\n<li>If Protein sequence is same but the structures(Secondary, Tertiary, Quarternary) are different then the function of the Protein changes.</li>\n<li>Do we have any information of these structure in the data?</li>\n<li>Do we have any information on which structure is the most important one to impact the protein functionig?</li>\n</ul>\n<p><strong>Answer (<a href=\"https://www.kaggle.com/tilii7\" target=\"_blank\">Tilii</a>):</strong></p>\n<ul>\n<li>A short answer to your question is that for this competition you probably don't need to worry about alternative protein structures.</li>\n</ul>\n<hr>\n<h5><a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409498\" target=\"_blank\">Feature Construction For Machine Learning Models</a> By <a href=\"https://www.kaggle.com/notsid\" target=\"_blank\">NotSid</a></h5>\n<p>In this <a href=\"https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409498\" target=\"_blank\">post</a>, the author seeks guidance on how to construct features optimally for protein function prediction models using non-deep learning approaches.</p>\n<p><strong>Answers:</strong></p>\n<ul>\n<li>Embeddings from language models work well. Check out the links for more details. <a href=\"https://www.nature.com/articles/s41598-020-80786-0\" target=\"_blank\">link</a>, <a href=\"https://github.com/Rostlab/goPredSim\" target=\"_blank\">link</a></li>\n<li>Another option would be to use a transformer protein language model embeddings as features. <a href=\"https://www.kaggle.com/code/viktorfairuschin/esm-2-embeddings-starter\" target=\"_blank\">notebook</a> (Using <a href=\"https://github.com/facebookresearch/esm\" target=\"_blank\">ESM-2 embeddings</a> and <a href=\"https://www.kaggle.com/datasets/sergeifironov/t5embeds\" target=\"_blank\">this dataset</a>)</li>\n<li>Use TF-IDF to capture the statistics of the amino-acids that appear the most in the dataset.</li>\n</ul>",
      "rawMarkdown": "# A summary of everything that happened up to this point!\n\nOne month left to the end of the competition!\nA good time to look back and review everything that happened up to this point.\n\nI went through all discussion posts (Not with ChatGPT, I actually read everything) and compiled a summary of the the most interesting bits that can be found in the different discussions.\n\nEnjoy!\n\n> (yes.. this took a while.. 😅)\n\n_____\n\n##### [Information Accretion explainer](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405237) By [Clara De Paolis](https://www.kaggle.com/claradepaolis)\n\nThis post provides an explanation of the information accretion (IA) measure in protein function annotation.\nIn short: IA measures how much information is added to an ontology annotation by a given node, considering its already annotated parents.\n\n**Some Key Points:**\n- IA quantifies the information added to an ontology annotation by a specific node, given that its parents are already annotated.\n- The calculation of IA involves comparing the probability of parent terms (Pr(*Pa(v)*)) with the probability of the specific node (Pr(*v*)).\n- The probabilities are estimated using observed annotations in the dataset as an empirical distribution.\n- There is also an [implemented calculation](https://github.com/claradepaolis/InformationAccretion) of IA using empirical counts.\n\nHighly suggested read for those interested in understanding the domain knowledge behind the competition.\n\n\n_____\n\n##### [Protein Language Models](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402565) By [Darek Kłeczek](https://www.kaggle.com/thedrcat)\n\n**Important [topic](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402565) by [Darek Kłeczek](https://www.kaggle.com/thedrcat)!**\n\nOn this competition we are likley to use protein language models (Examples: [ESM](https://github.com/facebookresearch/esm), [Ankh](https://www.proteinea.com/our-innovations/ankh-pioneering-language-models)).\n[Darek Kłeczek](https://www.kaggle.com/thedrcat) shares a [blog post](https://wandb.ai/darek/protobert/reports/Training-a-Protein-Language-Model-on-Cloud-TPU--VmlldzoyNzg2NTgz) about this subjest.\n_____\n\n\n##### [ESM2 final-layer embeddings](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406168) By [andreylalaley](https://www.kaggle.com/andreylalaley)\n\n[andreylalaley_NAME](https://www.kaggle.com/andreylalaley) shares final-layer embeddings from multiple ESM2 models.\nESM - Transformer protein language models from the Meta Fundamental AI Research Protein Team (FAIR). The post includes links to final-layer embeddings from five ESM variants:\n\nModel family on [github](https://github.com/facebookresearch/esm?ysclid=lh4h7w4j2b979516370)\n\n- [esm2_t6_8M (embeding size = 320)](https://www.kaggle.com/datasets/andreylalaley/315701375)\n- [esm2_t12_35M (embeding size = 480)](https://www.kaggle.com/datasets/andreylalaley/3023750)\n- [esm2_t30_150M (embeding size = 640)](https://www.kaggle.com/datasets/andreylalaley/8947923)\n- [esm2_t33_650M (embeding size = 1280)](https://www.kaggle.com/datasets/andreylalaley/23468234)\n- [esm2_t36_3B (embeding size = 2560)](https://www.kaggle.com/datasets/andreylalaley/4637427)\n\nData creation [notebook](https://www.kaggle.com/code/andreylalaley/esm-embeds-calculation).\n\n_____\n\n##### [Maybe we're not actually predicting protein function? ](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402696) By [Darek Kłeczek](https://www.kaggle.com/thedrcat)\n\n[Darek Kłeczek](https://www.kaggle.com/thedrcat) raises an concern that the competition's scoring system may inadvertently favor predicting which protein functions will be reported within the evaluation period, rather than accurately predicting protein functions themselves.\n\n**Opinions from the comments:**\n- The \"incomplete knowledge problem\" has minor impact on CAFA evaluations over several years.\n- The competition aims at predicting functions of unannotated proteins, evaluated against those acquiring functional annotations.\n- The challenge is considered as Positive-Unlabeled learning, common in many fields.\n- Optimizing predictions based on new annotations is difficult due to their scarcity.\n- Proteins often have multiple functions, adding complexity to predictions.\n- The biological knowledge basis, such as GO, is constantly revised and expanded.\n\nSee more on the original post: A very interesting read.\n_____\n\n##### [🧬 Graph Visualisation Kulyk 🧬](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402840) By [Yaroslav Isaienkov](https://www.kaggle.com/ihelon)\n------------------------ START OF EXAMPLE SUMMARIES ------------------------\n- In this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402840),\n\n\n[Yaroslav Isaienkov](https://www.kaggle.com/ihelon) dropped an amazing plot you might want to try yourself!\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1313949%2Ff9726a776920fc16813d021068259a8e%2Fex%20(3).gif?generation=1681940906956477&alt=media)\n\n**Code**\n```\ndef plot_dag(graph, term, radius=1):\n    ng_graph = networkx.ego_graph(graph, term, radius=radius)\n    for n in ng_graph.nodes(data=True):\n        n[1][\"label\"] = \"\\n\".join(n[1][\"name\"].split(\" \"))\n        n[1][\"title\"] = n[0]\n    nt = Network(height=1000, directed=True, notebook=True, cdn_resources=\"in_line\", select_menu=True, bgcolor=\"#222222\", font_color=\"white\")\n    nt.from_nx(ng_graph)\n    return nt.show(\"network.html\")\n```\n_____\n\n##### [Friday 07 July - research webinar.  Webinars and educational/research activity around the competition ](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418295) By [Alexander Chervov](https://www.kaggle.com/alexandervc)\n\n[Alexander Chervov](https://www.kaggle.com/alexandervc) shared a research webinar on ProDDG, a database of protein stability change upon mutation.\n\nAlthough not directly related to the CAFA5 challenge, the webinar may provide insights on how to apply the ideas to the competition, particularly in terms of data augmentation.\n\n**Links:**\n- **\"A short review of methods used in CAFA challenges:** [video](https://www.youtube.com/watch?v=hpYfLLqyo9Y&ab_channel=SciBerloga), [presentation](https://docs.google.com/presentation/d/1nxpFDVvxGb7F9uJ92swvNkXIUzzOm4Vi1qY1J0AoTUU/edit?pli=1#slide=id.p)\n- **\"Introduction to CAFA5 Protein function prediction Kaggle competition:** [video](https://www.youtube.com/watch?v=h4zTjPzPud4&ab_channel=SciBerloga), [presentation](https://docs.google.com/presentation/d/1VrYMvJPlSrPd56pNXYm5PUylnMLEp9d0oMjcobOP47o/edit#slide=id.p)\n- **\"Introduction to CAFA5 Protein function prediction Kaggle competition:** [video](https://www.youtube.com/watch?v=h4zTjPzPud4&ab_channel=SciBerloga), [presentation](https://docs.google.com/presentation/d/1VrYMvJPlSrPd56pNXYm5PUylnMLEp9d0oMjcobOP47o/edit#slide=id.p)\n\n_____\n\n##### [(Probably) Error in the metric computation](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/420241) By [Btbpanda](https://www.kaggle.com/btbpanda)\n\nIn this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/420241), [Btbpanda](https://www.kaggle.com/btbpanda) discovered a potential error in the metric implementation for the competition.\n\n**Comment (from the hosts):** `I can confirm that it was affecting the evaluation of non-propagated predictions and those where parents were predicted with lower scores than their children. This bug had a significant impact on the dashboard, and I apologize for any inconvenience it may have caused.. ..The Kaggle team will now take over and recalculate the dashboard with the updated code.`\n\n_____\n\n\n##### [Predicting GO annotations beyond protein homology](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402829) By [Tilii](https://www.kaggle.com/tilii7)\n\n[Tilii](https://www.kaggle.com/tilii7) shared a link to an approach developed by Burkhard Rost's lab that predicts GO annotations for proteins purely from their sequences ([GitHub Link](https://github.com/Rostlab/goPredSim)).\nThis lab also hosts a webserver that can directly predict GO annotations without the need to install language models ([Webserver Link](https://embed.protein.properties/)).\n\n**From the comments:**\n\n- The comments discuss some confusion around the three classifications in GO (Cellular Component, Molecular Function, Biological Process)\n- [Tilii](https://www.kaggle.com/tilii7) proposes that proteins can be categorized into two groups: those that move and those that do not move, and explain how proteins can have different roles and activities even if they do not physically move.\n- To read more, see [these](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403203) [posts](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402842)\n\n_____\n\n##### [What is a FASTA File and How To Read It](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402580) By [moth](https://www.kaggle.com/alejopaullier)\n\nOn this post we get a detailed explanation of what a FASTA file is and how to read it in Python. This is a very common file format used for biological sequences.\n\nExample of a FASTA file:\n\n> P20536 sp|P20536|UNG_VACCC Uracil-DNA glycosylase OS=Vaccinia virus (strain Copenhagen) OX=10249 GN=UNG PE=1 SV=1\n> MNSVTVSHAPYTITYHDDWEPVMSQLVEFYNEVASWLLRDETSPIPDKFFIQLKQPLRNK\n> RVCVCGIDPYPKDGTGVPFESPNFTKKSIKEIASSISRLTGVIDYKGYNLNIIDGVIPWN\n> YYLSCKLGETKSHAIYWDKISKLLLQHITKHVSVLYCLGKTDFSNIRAKLESPVTTIVGY\n> HPAARDRQFEKDRSFEIINVLLELDNKVPINWAQGFIY\n\n**How to read a FASTA file in Python**\n\n```\nfrom Bio import SeqIO\n\nfilename = \"/kaggle/input/cafa-5-protein-function-prediction/Train/train_sequences.fasta\"\nfasta_sequences = SeqIO.parse(open(filename),'fasta')\n\nfor fasta in fasta_sequences:\n    print(fasta)\n    print(\"Sequence ID:\", fasta.id)\n    print(\"Sequence length:\", len(fasta))\n    break\n```\n\n_____\n\n##### [Levels of knowledge specificity](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402842) By [Tilii](https://www.kaggle.com/tilii7)\n\nThis post explains the levels of knowledge specificity in Gene Ontology (GO) annotations and draws a parallel with taxonomic classification of organisms.\n\n**The Key Points:**\n- GO annotations represent different levels of knowledge about proteins, similar to taxonomic classification of organisms.\n- Broad functional annotations have smaller GO numbers, while more specific functions have larger GO numbers.\n- Taxonomic classification provides a hierarchy of categories, with higher levels being broad and lower levels being more specific.\n- GO annotations work in a similar manner, where broad functional designations are easier to predict (small GO numbers) compared to specific molecular functions (larger GO numbers).\n- Just as body parts can be classified at different levels (e.g., body part, left arm), protein functions can also be described at various levels of specificity.\n- As the level of specificity increases, the subset of proteins involved in the function narrows down.\n- The example of fine-motor skills demonstrates how specificity levels can be applied to both body parts and protein functions.\n\nPlease refer to the post for more details and examples.\n\n_____\n\n\n##### [EDA insights](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418006) By [Darek Kłeczek](https://www.kaggle.com/thedrcat)\n\nIn this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418006), [Darek Kłeczek](https://www.kaggle.com/thedrcat) shares their findings from conducting exploratory analysis on the competition data, along with some ideas for addressing the insights:\n\n- **Choosing Labels for Prediction:** The default approach is to choose the 1,500 most frequent nodes in the ontology graph as labels for prediction, but a more sophisticated approach could be explored.\n- **Handling the Ontology Graph:** The predictions are automatically propagated through the ontology DAG, so leveraging the graph structure could be beneficial for predictions.\n- **Features for Predictions:** While the default approach involves using protein language models encodings or sequence similarity, there are other features available in UniProtKB (e.g., taxonomy data) that could also be utilized.\n- **Importance of Sequence Length:** Sequences with very short or very long lengths (3 residues to 35,375 residues) may not be well represented by the LLMs. Considering how to handle these cases is important.\n- **Handling the Long Tail:** Label distributions show that there are frequent labels followed by a steep fall with a long tail of rare labels. Given the competition metric (information accretion), these rare labels could provide valuable insights.\n- **Distribution Shift:** New labels may differ from historical annotations, and there seems to be some differences between the train and test data. Certain species appear to have more representation in the test superset compared to the train data.\n\nSee [notebook](https://www.kaggle.com/code/thedrcat/cafa-5-protein-function-prediction-eda) for further exploration.\n_____\n\n##### [test-train duplicates](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403200) By [Sergei Fironov](https://www.kaggle.com/sergeifironov)\n\n- The post addresses the issue of duplicated IDs between the train and test sets.\n- The protein ID \"A0A1C3YKE0\" is discussed as an example, and it is mentioned that it has two GO annotations, but they do not have experimentally assigned evidence.\n- It is clarified that only experimentally validated GO terms are scored.\n\n**From the comments:**\n- Only proteins with new annotations will be included in the final test set.\n- Another question is about the possibility of an annotation being removed if it is later found to be spurious, and if such removals will be included in the test set.\n- The answer is in this [link](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406914).\n\n_____\n\n##### [Similar Competition Winner Solutions  🏆](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405547) By [Dewei Chen](https://www.kaggle.com/dwchen)\n\n**Comeptition: Open Problems - Multimodal Single-Cell Integration**\n\n1st solution: [here](https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366961)\n2nd solution: [here](https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366453)\n3rd solution: [here](https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366428)\n4th solution: [here](https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366460)\n5th solution: [here](https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366409)\n6th solution: [here](https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366417)\n\n_____\n\n##### [Protein Sequence Embedding Techniques (Resources)](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402756) By [Anusha](https://www.kaggle.com/ahsuna123)\n**Title**: Protein Sequence Embedding Techniques (Resources)\n\nIn this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402756), [Anusha](https://www.kaggle.com/ahsuna123) shares a list of various embedding techniques used for protein sequences that have proven to be more efficient than typical one-hot encoding or Tokenizers.\n\n**List of techniques mentioned:**\n1. ProtVec (word2vec): Provides a continuous distributed representation of biological sequences for deep proteomics and genomics.\n   - [Paper Link](https://arxiv.org/abs/1503.05140)\n2. SeqVec (ELMo): Models aspects of the language of life through transfer-learning protein sequences.\n   - [Paper Link](https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-019-3220-8)\n3. ESM‐1b (Transformer): Transformer protein language models that learn unsupervised structure.\n   - [Paper Link](https://openreview.net/pdf?id=fylclEqgvgd)\n4. ProtTrans (BERT): Utilizes self-supervised deep learning and high-performance computing to crack the language of life's code.\n   - [Paper Link](https://arxiv.org/abs/2007.06225)\n5. UDSMProt (AWD‐LSTM): Universal deep sequence models for protein classification.\n   - [Paper Link](https://academic.oup.com/bioinformatics/article/36/8/2401/5698270)\n6. UniRep (mLSTM): Enables unified rational protein engineering with sequence-based deep representation learning.\n   - [Paper Link](https://www.nature.com/articles/s41592-019-0598-1)\n\n\n**Some more resources from the comments:**\n\n- [Relevant Competition](https://www.kaggle.com/competitions/novozymes-enzyme-stability-prediction)\nA notebook about [ProtBert](https://www.kaggle.com/code/cdeotte/prot-bert-finetune-lb-0-30)\n\n\n_____\n\n\n##### [odd jump on the LB](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/404853) By [MT](https://www.kaggle.com/mtinti)\n\n**Important**\n\nIn this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/404853), [MT](https://www.kaggle.com/mtinti) shares their observation of a strange jump in their submission score after adding quick-go annotations to their predictions for a set of proteins.\n\n**From the comments:**\n\n- There is a correlation between tentative/computational predictions and real functions/annotations. It is suggested that using only quick-go annotations might lead to a decent placement in the competition.\n\n_____\n\n\n##### [2D embedding of CAFA test proteins](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406336) By [Tilii](https://www.kaggle.com/tilii7)\n- A post by [Tilii](https://www.kaggle.com/tilii7) showcases a t-SNE analysis of the CAFA test proteins using esm2_t30_150M_UR50D models provided by [andreylalaley](https://www.kaggle.com/andreylalaley).\n- The t-SNE plot reveals clusters of proteins with uniform colors, indicating that there is at least partial sorting of proteins by function in the test data.\n- In contrast, the same pattern is not observed in the t-SNE plot of the train data.\n_____\n\n##### [SPROF-GO predictions](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417561) By [MT](https://www.kaggle.com/mtinti)\n\n- In this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417561), [MT](https://www.kaggle.com/mtinti) shares the output of running the SPROF-GO protein function prediction method on the test set.\n- The program was run on Colab and the predictions can be found [here](https://www.kaggle.com/code/mtinti/sprof-predictions/).\n- The LB score of this method was **0.50148**.\n\n\n_____\n\n\n##### [At the final evaluation - annotations can only be ADDED  while existing (high-confident)  will be the same, or some can also \"disappear\"(not-confirmed) ?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406914) By [Alexander Chervov](https://www.kaggle.com/alexandervc)\n\n[Alexander Chervov](https://www.kaggle.com/alexandervc) Asks if at the final evaluation, only new annotations can be added to existing high-confidence ones, or if some high-confidence annotations can \"disappear\" if not confirmed by new experimental data.\n\n**In response:**\n\n[iddux1](https://www.kaggle.com/iddux1) states that theoretically, experimentally verified predictions may be retracted if there are errors in interpretation, redaction of papers, or new evidence that contradicts previous evidence.\n_____\n\n##### [ProtBERT Embeddings Dataset+Data Card 🔥](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/407162) By [Henri Upton](https://www.kaggle.com/henriupton)\n\n- [Henri Upton](https://www.kaggle.com/henriupton) has shared a dataset on Kaggle containing **[ProtBERT](https://huggingface.co/Rostlab/prot_bert)'s embedding vectors** for the competition.\n- The dataset can be found [here](https://www.kaggle.com/datasets/henriupton/protbert-embeddings-for-cafa5).\n- The dataset data card provides detailed information on how to use these embeddings.\n\n_____\n\n##### [Post Processing](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417784) By [MT](https://www.kaggle.com/mtinti)\n- In [this post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417784), [MT](https://www.kaggle.com/mtinti) explores the importance of post-processing.\n- With this effort the post processing tricks have managed to attain a score of 0.52856.\n- [notebook](https://www.kaggle.com/code/mtinti/merge-datasets/notebook)\n\n_____\n\n##### [Info on CAFA4](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403040) By [biodav](https://www.kaggle.com/biodav)\n\n- In this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403040), there is a discussion about the missing results of the CAFA4 and if there are any papers or preprints discussing the best methods used.\n- The most information we have at the moment comes from [Dewei Hu](https://www.kaggle.com/deweihu96) sharing some models they know: NetGO, deepgo, deepgraphgo, and deepnf.\n\n_____\n\n##### [Why are the existing GO annotations so poor?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405565) By [biodav](https://www.kaggle.com/biodav)\n\nThis discussion expresses concern about the quality of existing Gene Ontology (GO) annotations and its impact on the competition.\n- They highlight the lack of experimental annotations, even for well-known proteins like myoglobin. They question why terms like \"heme binding\" are labeled as inferred from electronic annotation (IEA) when there is ample evidence from prior research demonstrating myoglobin's heme-binding capability.\n- The author also raises questions about the reliability of the experimental terms, particularly those derived from high-throughput experiments, which may have significant error rates. They question the usefulness of a competition that relies on flawed training data where high-quality training data is historically not easily accessible, and the test set likely contains terms with potential errors.\n\n- Responses from other competitors members provide additional insights, including the explanation that experimental evidence might be species-specific and dependent on direct experiments conducted on particular species. They also challenge the author's assertion about error rates in high-throughput experiments and emphasize the need for competitors to construct their own training sets.\n\nSee full discussion for more details.\n\n_____\n\n##### [How similar are train and test data?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406573) By [Tilii](https://www.kaggle.com/tilii7)\n\n[Tilii](https://www.kaggle.com/tilii7) explores the similarity between the train and test data in the protein function prediction competition.\n- Using protein language model (pLM) embeddings the train and the test are visualized using t-SNE plots. The distributions appear to be very similar overall, with some differences observed.\n- The train data shows areas with few or no train data points, particularly on the left side and lower quadrant.\n- There is also a distinct group of points exclusively present in the train data, located just below the plot center, as well as a less prominent group in the upper right quadrant.\n\n\n_____\n\n##### [Possible bug in evaluation code causing submission errors](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403258) By [Raphey Holmes](https://www.kaggle.com/raphey)\n\nThe post raises a concern: If a protein ID is not listed in the submitted file, it should be assumed that all predictions are 0.\nHowever, it seems that submissions missing test rows can trigger a failure.\n\nBut after some experimentation, the solution was to fill in the missing rows with values such as \"GO:0000001\" and \"0.123\": **This allowed a previously failed submission to pass.**\n\n**Comment (from the hosts):**\n\nConfirming that if none of the targets overlap with the validation set, an exception is thrown by the program.\nAlthough the notebook doesn't report the exception, you can all test it locally using the [CAFA-evaluator](https://github.com/BioComputingUP/CAFA-evaluator) standalone version.\n\n_____\n\n\n##### [GO Term count analysis for helping class sampling](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/413349) By [Cafelatte1](https://www.kaggle.com/cafelatte1)\n\nIn this post, an analysis showed in this post found a pattern similar to the Pareto Rule.\nThe results indicate that focusing on the Molecular Function (MFO) category is better for evaluation. Although the number of unique MFO terms is less than others, the mean and max IA weight of MFO terms are larger.\nTwo key results were shared in the post.\n- The first result shows the cumulative count threshold for the total samples and the corresponding percentage of total GO Terms.\n- The second result explores the IA weight distribution for different GO Terms.\n\n_____\n\n##### [Q: The rationale behind the choice of GO termset for the training](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405085) By [Igor Pechersky](https://www.kaggle.com/igorrrr)\n\n[@iddux1](https://www.kaggle.com/igorrrr) asks for an explanation of the rationale behind the choice of the GO termset for the training in this competition.\n- Provides an example where the QuickGO annotations have more comprehensive and experimentally proven GO terms for a given protein than the list provided in `train_terms.tsv` for the same protein.\n- Highlights that most of the terms in `train_terms.tsv` are from GeneOntology Central and have non-experimental evidence codes.\n\n**From the Comments:**\nIn response, an official from the competition explains that they did not consider the IBA evidence code in the evaluation, and therefore, they omitted any annotations from `train_terms.tsv` that use the IBA evidence code.\nThey state that they only included proteins with annotated terms that have been validated by experimental or high-throughput evidence, traceable author statement (evidence code TAS), or inferred by a curator (IC).\n\n\n_____\n\n##### [Small bug in test data: A0A1D6E0S8 appears twice](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405947) By [Raphey Holmes](https://www.kaggle.com/raphey)\n\nThis discussion highlights a duplicate entry in the test data.\nIn general it is highly advised to check for duplicates in all datasets. Just in case.\n\n_____\n\n##### [Data Augmentation Techniques](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409802) By [Henri Upton](https://www.kaggle.com/henriupton)\n\nIn this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409802) there is a discussion about using augmentations to the dataset. (Specifically: MixUp)\n\nFurther on in the comments there is an interesting discussion about some augmentation techniques:\n- Link: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9843584/\n- Link: https://www.biorxiv.org/content/10.1101/2023.02.22.529597v2\n- And BLAST (Basic Local Alignment Search Tool), which is a sequence alignment algorithm used to compare query sequences with a library or database of sequences.\n**The proposal:**\n- Identify protein sequences that present quite rare GO terms (very sparse classes) : this would be our query sequences for BLAST => group (1)\n- Proceed BLAST queries that will allow for each protein from group (1) to have very similar sequences of existing proteins => collect their respective sequences (can be done easily, possibility to directly download result sequences as fasta files)\n- Use our favorite embedding pre-trained model (ProtBERT, T5, ESM2) to transform these new sequences into embedding vectors (must be same embedding space than one used for original training sequences)\n\n_____\n\n##### [Should we predict parents?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403166) By [Andrew](https://www.kaggle.com/andrewrrose)\n\nTwo questions are raised in this post:\n\n> When making predictions, do we need to include all the parent GO terms of a term we specify or will they be automatically inferred for us from the child terms that we include?\n\n**Answer (from the hosts):** They will be automatically inferred (or \"propagated\").\n\n> In the training/test data, if a protein is marked as having GO term X, is it guaranteed that all the parent, grandparent, etc. terms of X are also included for that protein? (If not, are we being asked to additionally predict which of the parent terms the annotator will have decided to include?)\n\n**Answer (from the hosts):** A term is guaranteed to have all the parents. This is known as the True Path Rule.\n\n_____\n\n##### [Notebook only submissions?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405313) By [moo](https://www.kaggle.com/subachev)\n\n**Question:** If so, is it okay to develop/submit files from a file (uploaded to notebook, then submitted) so long as the final submission is computed by a notebook?\n\n**Answer:**\n\n> The notebook is actually just a wrapper for the submission file. It does not have to compute anything.\n> https://www.kaggle.com/code/inversion/submitting-to-the-cafa-competition\n> The important part is that the submitted notebook comes with a submission.tsv file (in the specified format).\n> Whether this file is generated by the notebook or offline and then attached to it does not matter.\n\n_____\n\n##### [CV Grouping Strategy](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409329) By [moo](https://www.kaggle.com/subachev)\n\nIn this interesting [discussion](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409329), the author points out that random CV splitting in popular notebooks can lead to an overconfident estimate of model performance since similar proteins can end up in both the train and validation sets.\n\n**There are serveral options discussed in the comments for CV strategy:**\n\n- Grouping CV sets by keeping proteins clustered together based on mmseqs or embeddings.\n- Groups and folds: [notebook](https://www.kaggle.com/code/alexandervc/cafa5-23-groups-and-folds-diamond-igraph)\n- Important comment by [Tilii](https://www.kaggle.com/tilii7): The idea conceptually sound. The problem will likely arise in execution. some proteins will have many homologous sequences, and others will have none.\n- [moo]() Attempted re splitting uniformly. Using the suggested clustering command on the mmseqs README:\n> mmseqs easy-cluster examples/DB.fasta clusterRes tmp --min-seq-id 0.5 -c 0.8 --cov-mode 1\n\n`--cov-mode 1` should do clustering similarly to how you described above, which if I understood correctly should keep similar proteins together regardless of length.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F11298796%2F11bc4782c751744c88bdfbeec3d8ea9f%2FScreenshot%202023-05-12%20at%208.11.53%20AM.png?generation=1683904343421260&alt=media)\n\n- [Norix](https://www.kaggle.com/norixmb) also commented that most clustering algorithms only care about the \"uniqueness\" of the cluster representatives. This means that members of two different clusters might still be more similar than whatever threshold was used for the clustering of the representatives.\n_____\n\n##### [The metric is calculated with: prop_mode='fill' or prop_mode='max' ?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/419127) By [Alexander Chervov](https://www.kaggle.com/alexandervc)\n\nThere are two modes for the \"propagation\": one is \"fill\", another is \"max\":\n\n```preds = pred_parser(preds, ontologies, gt, prop_mode='fill', max_terms=500)```\n\n**Question:** In the current competition the default mode \"fill\" is used , is it true?\n\n_____\n\n\n##### [One question about weighted precision](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/407470) By [AndrewTsai](https://www.kaggle.com/andrewtsai0406)\n\nQuestion: Is the precision in weighted F-measures (for MF, BP, and CC) is always going to be one since there is no negative label but absent label?\n\n**Answer: ([Thaweewat R](https://www.kaggle.com/thaweewatboy))**\n\n> In the Positive-Unlabeled learning setup for this competition, the precision will not always be one. Predicting all 1500 GO terms for each test protein sequence would increase false positives, lowering precision. Instead, focus on developing a model that accurately identifies relevant GO terms while balancing precision and recall to achieve a high F-measure score.\n\n_____\n\n##### [Introduction to Protein Sequences(Synthesis and Prediction) using BioPython](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/411789) By [Arun Munagala](https://www.kaggle.com/arunmunagala)\n\n- [Arun Munagala](https://www.kaggle.com/arunmunagala) shares a notebook using Biopython for Protein Synthesis and Prediction.\n- [notebook](https://www.kaggle.com/code/arunmunagala/protein-synthesis-and-clustering-with-biopython?scriptVersionId=130350951).\n\n_____\n\n##### [GO_terms_not_in_train](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403213) By [MT](https://www.kaggle.com/mtinti)\n\nImportant note by [MT](https://www.kaggle.com/mtinti) regarding GO terms with high weights that do not appear in the training set.\n\n[notebook](https://www.kaggle.com/code/mtinti/go-terms-not-in-train/notebook?scriptVersionId=126704504)\n\n**Explanation (From the hosts):**\n>\n> This is true. To explain why that happens, let's consider how IA is calculated\n>\n> ia(v) = \\log_2 \\frac{1}{\\mathrm{Pr}(v|\\mathcal{Pa}(v))}\n> We use the training set (train_terms.tsv) as the empirical distribution that approximates the denominator in this equation. Since it's an empirical distribution, we regularize counts by adding a count of 1 to every term. This will avoid dividing by 0 for unseen terms.\n>\n> Let's sat term X doesn't appear in the training set and its IA is large. This means that there are many proteins in the dataset that are annotated with the parent term(s) of X,\n>\n> ia(X) = \\log_2\\left(\\frac{\\text{number of proteins with parent term(s) of } X}{\\text{number of proteins with term } X}\\right)\n> For some unseen X the denominator would be 0, but with our regularization it's 1. log_2(large number/1) = relatively large number.\n>\n> For example, here is one term I just looked up. Term GO:2001081 does not appear in train_terms.tsv. It has one parent term (GO:0030247) which appears in 142 proteins in the training set. IA(GO:2001081)= 7.15987 = log_2( (142+1)/(0+1))\n\n_____\n\n##### [Obsolete IDs](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403320) By [MT](https://www.kaggle.com/mtinti)\n\n[MT](https://www.kaggle.com/mtinti) is asking about a protein ID (A2RUG3) that is present only in the test set and now obsolete in UniProt. Can we eliminate such ids from our predictions?\n\n**Answer (From the hosts):**\n\n> We strongly recommend not excluding any IDs while generating predictions.\n\n_____\n\n##### [What is the difference between a 6-digit and a 10-digit EntryID (unique protein number)?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405785) By [Akki](https://www.kaggle.com/aesoptacit)\n\n**Answers Summary:**\n\n- The primary difference between the 6-digit and 10-digit EntryIDs is the database they are associated with in UniProt.\n- UniProt consists of two main sections: Swiss-Prot (6-digit) and TrEMBL (10-digit).\n- TrEMBL contains computationally annotated protein sequences derived from coding sequences in nucleotide sequence databases, but they have not been manually reviewed and annotated by UniProt curators like Swiss-Prot entries.\n- There is no hard rule dictating the length of the UniProt AC identifier. ACs in Swiss-Prot can be either 6 or 10 digits long.\n- The length of the UniProt AC does not necessarily determine the status or age of the protein entry.\n- Older entries tend to have 6-character ACs, which might have been manually checked and moved to Swiss-Prot, while newer entries may have 10-character ACs and might be part of TrEMBL.\n- UniProt ACs started with O, P, or Q but later expanded to include all 26 letters, and then further extended to 10 characters.\n- For the purposes of this competition, there is no practical difference between the 6-digit and 10-digit EntryIDs. The two identifiers are primarily used to understand the history and organization of protein entries in UniProt.\n\n_____\n\n##### ['U' in the protein sequencies](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409962) By [Ann Antonova](https://www.kaggle.com/aantonova)\n\n- From the overview: \"Proteins are large molecules composed of **20 **types of building-blocks known as amino acids\". But some proteins contain 21 letters, including 'U'. What does it mean?\n- X: some unusual and rare amino acid. The exact aa can be found in the text annotating the protein in swissprot. Those are typically so rare, that a single letter was never assigned to them.\n- Z: either glutamic acid (E) or glutamine (Q)\n- B: either aspartate (D) or asparagine (N)\n- U stands for unknown. Sometimes during sequencing there are stretches of DNA bases that are not properly resolved, and N is used as a generic replacement for [A,T,C,G]. When such a DNA sequence is translated into a protein, there is no way to assign it a known amino-acid.\n- X is unknown/any amino acid.\n_____\n\n\n##### [ESM2 fine-tuning baseline (LB=0.383)](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/415980) By [MST](https://www.kaggle.com/mst8823)\n[MST](https://www.kaggle.com/mst8823) shares a fine-tuning baseline for ESM2 [link](https://www.kaggle.com/code/mst8823/cafa5-esm2-fine-tuning-baseline)\n\n- Fine-tuned on Colab Pro+ achieving a cv score of 0.4990 (Evaluation code provided by the hosts)\n\n_____\n\n##### [Competition Evaluation Metric. How is it calculated with respect to threshold value?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417248) By [Afolabi A](https://www.kaggle.com/lequestion)\n\n**Question:** How is the evaluation metric calculated with respect to the threshold value (tau)?\n\n> How is the evaluation metric calculated with respect to tau?\n> Is tau swept over a grid of vaules between 1 and 0, is tau a fixed number?\n\n**Answers (Comments):**\n- https://www.kaggle.com/code/sergeifironov/validate-ridge\n- https://github.com/BioComputingUP/CAFA-evaluator\n\n_____\n\n##### [The MFO imbalance problem](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418456) By [ZXMKCD](https://www.kaggle.com/zmcxjt)\n\nInteresting insight: [ZXMKCD](https://www.kaggle.com/zmcxjt) noticed that the local evaluations of BPO and CCO terms correlate well with the test set scores, but this is not the case for MFO terms.\n\n- On this post, the author is unsure whether to trust their local evaluations or stick to the test evaluations, given the poor correlation for MFO terms.\n\nNo answers yet..\n\n_____\n\n\n##### [About this competition?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403058) By [yunsuxiaozi](https://www.kaggle.com/yunsuxiaozi)\n\n[yunsuxiaozi](https://www.kaggle.com/yunsuxiaozi) asking about prior biology knowledge and how relevant it is for this competition.\n\n**Answer (From the hosts):**\n- Suggested reading the following [link](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403203)\n\n_____\n\n\n##### [What does \"published\" mean for the test superset?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405898) By [h-wit](https://www.kaggle.com/halfwit)\n\n**Three clarifications on this post (from the hosts):**\n\n> Proteins having one or more of their functions published by researchers during the curation phase of the competition will comprise the future test set.\n\nThat's a bit of a misnomer. It's not that the GO term will be published, but rather that the protein will have a database entry associated with that GO term using an experimental validation where there wasn't such an association before. As pointed out in other discussions, there are experimental annotations out there in the literature that were not curated yet into the database.\n\n> Eg, can someone look at conference abstracts/posters, dissertations, (or perhaps NIH grants, if that is available) to guess which proteins may soon be added?\n\nYou have just described an ongoing effort for two decades of automated biocuratrion efforts. There is a whole body of literature on that, e.g. https://pubmed.ncbi.nlm.nih.gov/23514326/\n\n> Is it considered valid in this competition to also do \"Information Extraction\"?\n\nYou can use any information you like, as long as it's public, as elaborated in the Rules.\n\n_____\n\n\n##### [biological background](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/407730) By [yassine zarwal](https://www.kaggle.com/yassinezarwal)\n\nThe question raised in this post is whether having a biological background or solid understanding is necessary for this competition.\n\n**Suggestions (In the comments):**\n\n- Read papers on the subject and learn how researchers have implemented their models to solve similar problems.\n- Explore discussions on the platform where useful resources are shared, and take the time to read them.\n- Consider using language model embeddings, as they can provide valuable insights even without prior knowledge.\n\n_____\n\n\n##### [How to Select the Best Protein Embedding Features in T5 and Other Feature Extraction Transformers?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409952) By [Capoo Cat](https://www.kaggle.com/lau01b)\n\n[Capoo Cat](https://www.kaggle.com/lau01b) is facing a problem where the accuracy of the model using T5 embedding feature data for proteins is stuck.\n\n\n- Suggestions given by others:\n  - **GO term imbalance** There might be an imbalance in the GO term labels and sparsity of the target space. Suggested reweighting specific labels or balancing the set during training to avoid overfitting.\n  - **Label Correlation:** Exploring solutions that incorporate label correlations, as GO terms are highly correlated in specific cases.\n  - **Fine-tuning T5 to your own needs:** Suggested unfreezing layers of the T5 model to make it more flexible.\n_____\n\n\n##### [How was the train set selected? Swiss-Prot vs TrEMBL and curated annotations.](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/416745) By [Darek Kłeczek](https://www.kaggle.com/thedrcat)\n\nIn [this post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/416745), [Darek Kłeczek](https://www.kaggle.com/thedrcat) raises a question about how the train set was selected for the competition.\n\n[MT](https://www.kaggle.com/mtinti) response that the answer could be found [here](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405085#2236274)\n\n_____\n\n##### [Use of GO prediction software](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418494) By [ZXMKCD](https://www.kaggle.com/zmcxjt)\n\nFor model building we can use published tools like BLAST, protein language models, and AlphaGO2 that predicts various biochemical aspects of proteins.\nBut does this extend to models that directly predict protein GO terms if they are publicly available? Can we use the results of such models when creating our ensemble predictions for this competition?\n\n**Answer (From the hosts):**\n\n> In one word: yes. Be advised of the Winner License clause in the rules though.\n\n_____\n\n##### [Finetune a LLM on 2 GPUs](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/419056) By [Simon Veitner](https://www.kaggle.com/simonveitner)\n\n**Finetune a LLM on 2 GPUs**\n\nIn this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/419056), [Simon Veitner](https://www.kaggle.com/simonveitner) shared code for finetuning a protein language model on 2 GPUs.\n\nThe LB score achieved from training on 1 fold without any finetuning is 0.329, but the post encourages others to tune hyperparameters, explore different models, and report any interesting findings or mistakes in the notebook.\n\nYou can find the code [here](https://www.kaggle.com/simonveitner/finetuning-on-2-gpus).\n\n\n_____\n\n##### [Everything you need to know | CAFA Protein Prediction](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/420931) By [AyushS9020](https://www.kaggle.com/ayushs9020)\n\nThis detailed discussion provides efficient resources for newcomers to catch up with the competition.\nIt includes an advisory section, field knowledge, data, and a pre written DataLoader.\n\n**Highly suggested read**\n\n_____\n\n\n##### [Impact of Different Protein structures on the Protein functioning](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406602) By [Niti95](https://www.kaggle.com/niti95)\n\nThis post raises some interesting questions:\n\n- If Protein sequence is same but the structures(Secondary, Tertiary, Quarternary) are different then the function of the Protein changes.\n- Do we have any information of these structure in the data?\n- Do we have any information on which structure is the most important one to impact the protein functionig?\n\n**Answer ([Tilii](https://www.kaggle.com/tilii7)):**\n- A short answer to your question is that for this competition you probably don't need to worry about alternative protein structures.\n\n_____\n\n##### [Feature Construction For Machine Learning Models](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409498) By [NotSid](https://www.kaggle.com/notsid)\n\nIn this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409498), the author seeks guidance on how to construct features optimally for protein function prediction models using non-deep learning approaches.\n\n**Answers:**\n\n- Embeddings from language models work well. Check out the links for more details. [link](https://www.nature.com/articles/s41598-020-80786-0), [link](https://github.com/Rostlab/goPredSim)\n- Another option would be to use a transformer protein language model embeddings as features. [notebook](https://www.kaggle.com/code/viktorfairuschin/esm-2-embeddings-starter) (Using [ESM-2 embeddings](https://github.com/facebookresearch/esm) and [this dataset](https://www.kaggle.com/datasets/sergeifironov/t5embeds))\n- Use TF-IDF to capture the statistics of the amino-acids that appear the most in the dataset.\n\n",
      "votes": 49
    }
  ],
  "comments": [],
  "raw_markdown_by_id": {
    "2337432": "# A summary of everything that happened up to this point!\n\nOne month left to the end of the competition!\nA good time to look back and review everything that happened up to this point.\n\nI went through all discussion posts (Not with ChatGPT, I actually read everything) and compiled a summary of the the most interesting bits that can be found in the different discussions.\n\nEnjoy!\n\n> (yes.. this took a while.. 😅)\n\n_____\n\n##### [Information Accretion explainer](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405237) By [Clara De Paolis](https://www.kaggle.com/claradepaolis)\n\nThis post provides an explanation of the information accretion (IA) measure in protein function annotation.\nIn short: IA measures how much information is added to an ontology annotation by a given node, considering its already annotated parents.\n\n**Some Key Points:**\n- IA quantifies the information added to an ontology annotation by a specific node, given that its parents are already annotated.\n- The calculation of IA involves comparing the probability of parent terms (Pr(*Pa(v)*)) with the probability of the specific node (Pr(*v*)).\n- The probabilities are estimated using observed annotations in the dataset as an empirical distribution.\n- There is also an [implemented calculation](https://github.com/claradepaolis/InformationAccretion) of IA using empirical counts.\n\nHighly suggested read for those interested in understanding the domain knowledge behind the competition.\n\n\n_____\n\n##### [Protein Language Models](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402565) By [Darek Kłeczek](https://www.kaggle.com/thedrcat)\n\n**Important [topic](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402565) by [Darek Kłeczek](https://www.kaggle.com/thedrcat)!**\n\nOn this competition we are likley to use protein language models (Examples: [ESM](https://github.com/facebookresearch/esm), [Ankh](https://www.proteinea.com/our-innovations/ankh-pioneering-language-models)).\n[Darek Kłeczek](https://www.kaggle.com/thedrcat) shares a [blog post](https://wandb.ai/darek/protobert/reports/Training-a-Protein-Language-Model-on-Cloud-TPU--VmlldzoyNzg2NTgz) about this subjest.\n_____\n\n\n##### [ESM2 final-layer embeddings](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406168) By [andreylalaley](https://www.kaggle.com/andreylalaley)\n\n[andreylalaley_NAME](https://www.kaggle.com/andreylalaley) shares final-layer embeddings from multiple ESM2 models.\nESM - Transformer protein language models from the Meta Fundamental AI Research Protein Team (FAIR). The post includes links to final-layer embeddings from five ESM variants:\n\nModel family on [github](https://github.com/facebookresearch/esm?ysclid=lh4h7w4j2b979516370)\n\n- [esm2_t6_8M (embeding size = 320)](https://www.kaggle.com/datasets/andreylalaley/315701375)\n- [esm2_t12_35M (embeding size = 480)](https://www.kaggle.com/datasets/andreylalaley/3023750)\n- [esm2_t30_150M (embeding size = 640)](https://www.kaggle.com/datasets/andreylalaley/8947923)\n- [esm2_t33_650M (embeding size = 1280)](https://www.kaggle.com/datasets/andreylalaley/23468234)\n- [esm2_t36_3B (embeding size = 2560)](https://www.kaggle.com/datasets/andreylalaley/4637427)\n\nData creation [notebook](https://www.kaggle.com/code/andreylalaley/esm-embeds-calculation).\n\n_____\n\n##### [Maybe we're not actually predicting protein function? ](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402696) By [Darek Kłeczek](https://www.kaggle.com/thedrcat)\n\n[Darek Kłeczek](https://www.kaggle.com/thedrcat) raises an concern that the competition's scoring system may inadvertently favor predicting which protein functions will be reported within the evaluation period, rather than accurately predicting protein functions themselves.\n\n**Opinions from the comments:**\n- The \"incomplete knowledge problem\" has minor impact on CAFA evaluations over several years.\n- The competition aims at predicting functions of unannotated proteins, evaluated against those acquiring functional annotations.\n- The challenge is considered as Positive-Unlabeled learning, common in many fields.\n- Optimizing predictions based on new annotations is difficult due to their scarcity.\n- Proteins often have multiple functions, adding complexity to predictions.\n- The biological knowledge basis, such as GO, is constantly revised and expanded.\n\nSee more on the original post: A very interesting read.\n_____\n\n##### [🧬 Graph Visualisation Kulyk 🧬](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402840) By [Yaroslav Isaienkov](https://www.kaggle.com/ihelon)\n------------------------ START OF EXAMPLE SUMMARIES ------------------------\n- In this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402840),\n\n\n[Yaroslav Isaienkov](https://www.kaggle.com/ihelon) dropped an amazing plot you might want to try yourself!\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1313949%2Ff9726a776920fc16813d021068259a8e%2Fex%20(3).gif?generation=1681940906956477&alt=media)\n\n**Code**\n```\ndef plot_dag(graph, term, radius=1):\n    ng_graph = networkx.ego_graph(graph, term, radius=radius)\n    for n in ng_graph.nodes(data=True):\n        n[1][\"label\"] = \"\\n\".join(n[1][\"name\"].split(\" \"))\n        n[1][\"title\"] = n[0]\n    nt = Network(height=1000, directed=True, notebook=True, cdn_resources=\"in_line\", select_menu=True, bgcolor=\"#222222\", font_color=\"white\")\n    nt.from_nx(ng_graph)\n    return nt.show(\"network.html\")\n```\n_____\n\n##### [Friday 07 July - research webinar.  Webinars and educational/research activity around the competition ](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418295) By [Alexander Chervov](https://www.kaggle.com/alexandervc)\n\n[Alexander Chervov](https://www.kaggle.com/alexandervc) shared a research webinar on ProDDG, a database of protein stability change upon mutation.\n\nAlthough not directly related to the CAFA5 challenge, the webinar may provide insights on how to apply the ideas to the competition, particularly in terms of data augmentation.\n\n**Links:**\n- **\"A short review of methods used in CAFA challenges:** [video](https://www.youtube.com/watch?v=hpYfLLqyo9Y&ab_channel=SciBerloga), [presentation](https://docs.google.com/presentation/d/1nxpFDVvxGb7F9uJ92swvNkXIUzzOm4Vi1qY1J0AoTUU/edit?pli=1#slide=id.p)\n- **\"Introduction to CAFA5 Protein function prediction Kaggle competition:** [video](https://www.youtube.com/watch?v=h4zTjPzPud4&ab_channel=SciBerloga), [presentation](https://docs.google.com/presentation/d/1VrYMvJPlSrPd56pNXYm5PUylnMLEp9d0oMjcobOP47o/edit#slide=id.p)\n- **\"Introduction to CAFA5 Protein function prediction Kaggle competition:** [video](https://www.youtube.com/watch?v=h4zTjPzPud4&ab_channel=SciBerloga), [presentation](https://docs.google.com/presentation/d/1VrYMvJPlSrPd56pNXYm5PUylnMLEp9d0oMjcobOP47o/edit#slide=id.p)\n\n_____\n\n##### [(Probably) Error in the metric computation](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/420241) By [Btbpanda](https://www.kaggle.com/btbpanda)\n\nIn this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/420241), [Btbpanda](https://www.kaggle.com/btbpanda) discovered a potential error in the metric implementation for the competition.\n\n**Comment (from the hosts):** `I can confirm that it was affecting the evaluation of non-propagated predictions and those where parents were predicted with lower scores than their children. This bug had a significant impact on the dashboard, and I apologize for any inconvenience it may have caused.. ..The Kaggle team will now take over and recalculate the dashboard with the updated code.`\n\n_____\n\n\n##### [Predicting GO annotations beyond protein homology](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402829) By [Tilii](https://www.kaggle.com/tilii7)\n\n[Tilii](https://www.kaggle.com/tilii7) shared a link to an approach developed by Burkhard Rost's lab that predicts GO annotations for proteins purely from their sequences ([GitHub Link](https://github.com/Rostlab/goPredSim)).\nThis lab also hosts a webserver that can directly predict GO annotations without the need to install language models ([Webserver Link](https://embed.protein.properties/)).\n\n**From the comments:**\n\n- The comments discuss some confusion around the three classifications in GO (Cellular Component, Molecular Function, Biological Process)\n- [Tilii](https://www.kaggle.com/tilii7) proposes that proteins can be categorized into two groups: those that move and those that do not move, and explain how proteins can have different roles and activities even if they do not physically move.\n- To read more, see [these](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403203) [posts](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402842)\n\n_____\n\n##### [What is a FASTA File and How To Read It](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402580) By [moth](https://www.kaggle.com/alejopaullier)\n\nOn this post we get a detailed explanation of what a FASTA file is and how to read it in Python. This is a very common file format used for biological sequences.\n\nExample of a FASTA file:\n\n> P20536 sp|P20536|UNG_VACCC Uracil-DNA glycosylase OS=Vaccinia virus (strain Copenhagen) OX=10249 GN=UNG PE=1 SV=1\n> MNSVTVSHAPYTITYHDDWEPVMSQLVEFYNEVASWLLRDETSPIPDKFFIQLKQPLRNK\n> RVCVCGIDPYPKDGTGVPFESPNFTKKSIKEIASSISRLTGVIDYKGYNLNIIDGVIPWN\n> YYLSCKLGETKSHAIYWDKISKLLLQHITKHVSVLYCLGKTDFSNIRAKLESPVTTIVGY\n> HPAARDRQFEKDRSFEIINVLLELDNKVPINWAQGFIY\n\n**How to read a FASTA file in Python**\n\n```\nfrom Bio import SeqIO\n\nfilename = \"/kaggle/input/cafa-5-protein-function-prediction/Train/train_sequences.fasta\"\nfasta_sequences = SeqIO.parse(open(filename),'fasta')\n\nfor fasta in fasta_sequences:\n    print(fasta)\n    print(\"Sequence ID:\", fasta.id)\n    print(\"Sequence length:\", len(fasta))\n    break\n```\n\n_____\n\n##### [Levels of knowledge specificity](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402842) By [Tilii](https://www.kaggle.com/tilii7)\n\nThis post explains the levels of knowledge specificity in Gene Ontology (GO) annotations and draws a parallel with taxonomic classification of organisms.\n\n**The Key Points:**\n- GO annotations represent different levels of knowledge about proteins, similar to taxonomic classification of organisms.\n- Broad functional annotations have smaller GO numbers, while more specific functions have larger GO numbers.\n- Taxonomic classification provides a hierarchy of categories, with higher levels being broad and lower levels being more specific.\n- GO annotations work in a similar manner, where broad functional designations are easier to predict (small GO numbers) compared to specific molecular functions (larger GO numbers).\n- Just as body parts can be classified at different levels (e.g., body part, left arm), protein functions can also be described at various levels of specificity.\n- As the level of specificity increases, the subset of proteins involved in the function narrows down.\n- The example of fine-motor skills demonstrates how specificity levels can be applied to both body parts and protein functions.\n\nPlease refer to the post for more details and examples.\n\n_____\n\n\n##### [EDA insights](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418006) By [Darek Kłeczek](https://www.kaggle.com/thedrcat)\n\nIn this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418006), [Darek Kłeczek](https://www.kaggle.com/thedrcat) shares their findings from conducting exploratory analysis on the competition data, along with some ideas for addressing the insights:\n\n- **Choosing Labels for Prediction:** The default approach is to choose the 1,500 most frequent nodes in the ontology graph as labels for prediction, but a more sophisticated approach could be explored.\n- **Handling the Ontology Graph:** The predictions are automatically propagated through the ontology DAG, so leveraging the graph structure could be beneficial for predictions.\n- **Features for Predictions:** While the default approach involves using protein language models encodings or sequence similarity, there are other features available in UniProtKB (e.g., taxonomy data) that could also be utilized.\n- **Importance of Sequence Length:** Sequences with very short or very long lengths (3 residues to 35,375 residues) may not be well represented by the LLMs. Considering how to handle these cases is important.\n- **Handling the Long Tail:** Label distributions show that there are frequent labels followed by a steep fall with a long tail of rare labels. Given the competition metric (information accretion), these rare labels could provide valuable insights.\n- **Distribution Shift:** New labels may differ from historical annotations, and there seems to be some differences between the train and test data. Certain species appear to have more representation in the test superset compared to the train data.\n\nSee [notebook](https://www.kaggle.com/code/thedrcat/cafa-5-protein-function-prediction-eda) for further exploration.\n_____\n\n##### [test-train duplicates](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403200) By [Sergei Fironov](https://www.kaggle.com/sergeifironov)\n\n- The post addresses the issue of duplicated IDs between the train and test sets.\n- The protein ID \"A0A1C3YKE0\" is discussed as an example, and it is mentioned that it has two GO annotations, but they do not have experimentally assigned evidence.\n- It is clarified that only experimentally validated GO terms are scored.\n\n**From the comments:**\n- Only proteins with new annotations will be included in the final test set.\n- Another question is about the possibility of an annotation being removed if it is later found to be spurious, and if such removals will be included in the test set.\n- The answer is in this [link](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406914).\n\n_____\n\n##### [Similar Competition Winner Solutions  🏆](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405547) By [Dewei Chen](https://www.kaggle.com/dwchen)\n\n**Comeptition: Open Problems - Multimodal Single-Cell Integration**\n\n1st solution: [here](https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366961)\n2nd solution: [here](https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366453)\n3rd solution: [here](https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366428)\n4th solution: [here](https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366460)\n5th solution: [here](https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366409)\n6th solution: [here](https://www.kaggle.com/competitions/open-problems-multimodal/discussion/366417)\n\n_____\n\n##### [Protein Sequence Embedding Techniques (Resources)](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402756) By [Anusha](https://www.kaggle.com/ahsuna123)\n**Title**: Protein Sequence Embedding Techniques (Resources)\n\nIn this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/402756), [Anusha](https://www.kaggle.com/ahsuna123) shares a list of various embedding techniques used for protein sequences that have proven to be more efficient than typical one-hot encoding or Tokenizers.\n\n**List of techniques mentioned:**\n1. ProtVec (word2vec): Provides a continuous distributed representation of biological sequences for deep proteomics and genomics.\n   - [Paper Link](https://arxiv.org/abs/1503.05140)\n2. SeqVec (ELMo): Models aspects of the language of life through transfer-learning protein sequences.\n   - [Paper Link](https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-019-3220-8)\n3. ESM‐1b (Transformer): Transformer protein language models that learn unsupervised structure.\n   - [Paper Link](https://openreview.net/pdf?id=fylclEqgvgd)\n4. ProtTrans (BERT): Utilizes self-supervised deep learning and high-performance computing to crack the language of life's code.\n   - [Paper Link](https://arxiv.org/abs/2007.06225)\n5. UDSMProt (AWD‐LSTM): Universal deep sequence models for protein classification.\n   - [Paper Link](https://academic.oup.com/bioinformatics/article/36/8/2401/5698270)\n6. UniRep (mLSTM): Enables unified rational protein engineering with sequence-based deep representation learning.\n   - [Paper Link](https://www.nature.com/articles/s41592-019-0598-1)\n\n\n**Some more resources from the comments:**\n\n- [Relevant Competition](https://www.kaggle.com/competitions/novozymes-enzyme-stability-prediction)\nA notebook about [ProtBert](https://www.kaggle.com/code/cdeotte/prot-bert-finetune-lb-0-30)\n\n\n_____\n\n\n##### [odd jump on the LB](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/404853) By [MT](https://www.kaggle.com/mtinti)\n\n**Important**\n\nIn this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/404853), [MT](https://www.kaggle.com/mtinti) shares their observation of a strange jump in their submission score after adding quick-go annotations to their predictions for a set of proteins.\n\n**From the comments:**\n\n- There is a correlation between tentative/computational predictions and real functions/annotations. It is suggested that using only quick-go annotations might lead to a decent placement in the competition.\n\n_____\n\n\n##### [2D embedding of CAFA test proteins](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406336) By [Tilii](https://www.kaggle.com/tilii7)\n- A post by [Tilii](https://www.kaggle.com/tilii7) showcases a t-SNE analysis of the CAFA test proteins using esm2_t30_150M_UR50D models provided by [andreylalaley](https://www.kaggle.com/andreylalaley).\n- The t-SNE plot reveals clusters of proteins with uniform colors, indicating that there is at least partial sorting of proteins by function in the test data.\n- In contrast, the same pattern is not observed in the t-SNE plot of the train data.\n_____\n\n##### [SPROF-GO predictions](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417561) By [MT](https://www.kaggle.com/mtinti)\n\n- In this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417561), [MT](https://www.kaggle.com/mtinti) shares the output of running the SPROF-GO protein function prediction method on the test set.\n- The program was run on Colab and the predictions can be found [here](https://www.kaggle.com/code/mtinti/sprof-predictions/).\n- The LB score of this method was **0.50148**.\n\n\n_____\n\n\n##### [At the final evaluation - annotations can only be ADDED  while existing (high-confident)  will be the same, or some can also \"disappear\"(not-confirmed) ?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406914) By [Alexander Chervov](https://www.kaggle.com/alexandervc)\n\n[Alexander Chervov](https://www.kaggle.com/alexandervc) Asks if at the final evaluation, only new annotations can be added to existing high-confidence ones, or if some high-confidence annotations can \"disappear\" if not confirmed by new experimental data.\n\n**In response:**\n\n[iddux1](https://www.kaggle.com/iddux1) states that theoretically, experimentally verified predictions may be retracted if there are errors in interpretation, redaction of papers, or new evidence that contradicts previous evidence.\n_____\n\n##### [ProtBERT Embeddings Dataset+Data Card 🔥](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/407162) By [Henri Upton](https://www.kaggle.com/henriupton)\n\n- [Henri Upton](https://www.kaggle.com/henriupton) has shared a dataset on Kaggle containing **[ProtBERT](https://huggingface.co/Rostlab/prot_bert)'s embedding vectors** for the competition.\n- The dataset can be found [here](https://www.kaggle.com/datasets/henriupton/protbert-embeddings-for-cafa5).\n- The dataset data card provides detailed information on how to use these embeddings.\n\n_____\n\n##### [Post Processing](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417784) By [MT](https://www.kaggle.com/mtinti)\n- In [this post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417784), [MT](https://www.kaggle.com/mtinti) explores the importance of post-processing.\n- With this effort the post processing tricks have managed to attain a score of 0.52856.\n- [notebook](https://www.kaggle.com/code/mtinti/merge-datasets/notebook)\n\n_____\n\n##### [Info on CAFA4](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403040) By [biodav](https://www.kaggle.com/biodav)\n\n- In this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403040), there is a discussion about the missing results of the CAFA4 and if there are any papers or preprints discussing the best methods used.\n- The most information we have at the moment comes from [Dewei Hu](https://www.kaggle.com/deweihu96) sharing some models they know: NetGO, deepgo, deepgraphgo, and deepnf.\n\n_____\n\n##### [Why are the existing GO annotations so poor?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405565) By [biodav](https://www.kaggle.com/biodav)\n\nThis discussion expresses concern about the quality of existing Gene Ontology (GO) annotations and its impact on the competition.\n- They highlight the lack of experimental annotations, even for well-known proteins like myoglobin. They question why terms like \"heme binding\" are labeled as inferred from electronic annotation (IEA) when there is ample evidence from prior research demonstrating myoglobin's heme-binding capability.\n- The author also raises questions about the reliability of the experimental terms, particularly those derived from high-throughput experiments, which may have significant error rates. They question the usefulness of a competition that relies on flawed training data where high-quality training data is historically not easily accessible, and the test set likely contains terms with potential errors.\n\n- Responses from other competitors members provide additional insights, including the explanation that experimental evidence might be species-specific and dependent on direct experiments conducted on particular species. They also challenge the author's assertion about error rates in high-throughput experiments and emphasize the need for competitors to construct their own training sets.\n\nSee full discussion for more details.\n\n_____\n\n##### [How similar are train and test data?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406573) By [Tilii](https://www.kaggle.com/tilii7)\n\n[Tilii](https://www.kaggle.com/tilii7) explores the similarity between the train and test data in the protein function prediction competition.\n- Using protein language model (pLM) embeddings the train and the test are visualized using t-SNE plots. The distributions appear to be very similar overall, with some differences observed.\n- The train data shows areas with few or no train data points, particularly on the left side and lower quadrant.\n- There is also a distinct group of points exclusively present in the train data, located just below the plot center, as well as a less prominent group in the upper right quadrant.\n\n\n_____\n\n##### [Possible bug in evaluation code causing submission errors](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403258) By [Raphey Holmes](https://www.kaggle.com/raphey)\n\nThe post raises a concern: If a protein ID is not listed in the submitted file, it should be assumed that all predictions are 0.\nHowever, it seems that submissions missing test rows can trigger a failure.\n\nBut after some experimentation, the solution was to fill in the missing rows with values such as \"GO:0000001\" and \"0.123\": **This allowed a previously failed submission to pass.**\n\n**Comment (from the hosts):**\n\nConfirming that if none of the targets overlap with the validation set, an exception is thrown by the program.\nAlthough the notebook doesn't report the exception, you can all test it locally using the [CAFA-evaluator](https://github.com/BioComputingUP/CAFA-evaluator) standalone version.\n\n_____\n\n\n##### [GO Term count analysis for helping class sampling](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/413349) By [Cafelatte1](https://www.kaggle.com/cafelatte1)\n\nIn this post, an analysis showed in this post found a pattern similar to the Pareto Rule.\nThe results indicate that focusing on the Molecular Function (MFO) category is better for evaluation. Although the number of unique MFO terms is less than others, the mean and max IA weight of MFO terms are larger.\nTwo key results were shared in the post.\n- The first result shows the cumulative count threshold for the total samples and the corresponding percentage of total GO Terms.\n- The second result explores the IA weight distribution for different GO Terms.\n\n_____\n\n##### [Q: The rationale behind the choice of GO termset for the training](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405085) By [Igor Pechersky](https://www.kaggle.com/igorrrr)\n\n[@iddux1](https://www.kaggle.com/igorrrr) asks for an explanation of the rationale behind the choice of the GO termset for the training in this competition.\n- Provides an example where the QuickGO annotations have more comprehensive and experimentally proven GO terms for a given protein than the list provided in `train_terms.tsv` for the same protein.\n- Highlights that most of the terms in `train_terms.tsv` are from GeneOntology Central and have non-experimental evidence codes.\n\n**From the Comments:**\nIn response, an official from the competition explains that they did not consider the IBA evidence code in the evaluation, and therefore, they omitted any annotations from `train_terms.tsv` that use the IBA evidence code.\nThey state that they only included proteins with annotated terms that have been validated by experimental or high-throughput evidence, traceable author statement (evidence code TAS), or inferred by a curator (IC).\n\n\n_____\n\n##### [Small bug in test data: A0A1D6E0S8 appears twice](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405947) By [Raphey Holmes](https://www.kaggle.com/raphey)\n\nThis discussion highlights a duplicate entry in the test data.\nIn general it is highly advised to check for duplicates in all datasets. Just in case.\n\n_____\n\n##### [Data Augmentation Techniques](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409802) By [Henri Upton](https://www.kaggle.com/henriupton)\n\nIn this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409802) there is a discussion about using augmentations to the dataset. (Specifically: MixUp)\n\nFurther on in the comments there is an interesting discussion about some augmentation techniques:\n- Link: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9843584/\n- Link: https://www.biorxiv.org/content/10.1101/2023.02.22.529597v2\n- And BLAST (Basic Local Alignment Search Tool), which is a sequence alignment algorithm used to compare query sequences with a library or database of sequences.\n**The proposal:**\n- Identify protein sequences that present quite rare GO terms (very sparse classes) : this would be our query sequences for BLAST => group (1)\n- Proceed BLAST queries that will allow for each protein from group (1) to have very similar sequences of existing proteins => collect their respective sequences (can be done easily, possibility to directly download result sequences as fasta files)\n- Use our favorite embedding pre-trained model (ProtBERT, T5, ESM2) to transform these new sequences into embedding vectors (must be same embedding space than one used for original training sequences)\n\n_____\n\n##### [Should we predict parents?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403166) By [Andrew](https://www.kaggle.com/andrewrrose)\n\nTwo questions are raised in this post:\n\n> When making predictions, do we need to include all the parent GO terms of a term we specify or will they be automatically inferred for us from the child terms that we include?\n\n**Answer (from the hosts):** They will be automatically inferred (or \"propagated\").\n\n> In the training/test data, if a protein is marked as having GO term X, is it guaranteed that all the parent, grandparent, etc. terms of X are also included for that protein? (If not, are we being asked to additionally predict which of the parent terms the annotator will have decided to include?)\n\n**Answer (from the hosts):** A term is guaranteed to have all the parents. This is known as the True Path Rule.\n\n_____\n\n##### [Notebook only submissions?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405313) By [moo](https://www.kaggle.com/subachev)\n\n**Question:** If so, is it okay to develop/submit files from a file (uploaded to notebook, then submitted) so long as the final submission is computed by a notebook?\n\n**Answer:**\n\n> The notebook is actually just a wrapper for the submission file. It does not have to compute anything.\n> https://www.kaggle.com/code/inversion/submitting-to-the-cafa-competition\n> The important part is that the submitted notebook comes with a submission.tsv file (in the specified format).\n> Whether this file is generated by the notebook or offline and then attached to it does not matter.\n\n_____\n\n##### [CV Grouping Strategy](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409329) By [moo](https://www.kaggle.com/subachev)\n\nIn this interesting [discussion](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409329), the author points out that random CV splitting in popular notebooks can lead to an overconfident estimate of model performance since similar proteins can end up in both the train and validation sets.\n\n**There are serveral options discussed in the comments for CV strategy:**\n\n- Grouping CV sets by keeping proteins clustered together based on mmseqs or embeddings.\n- Groups and folds: [notebook](https://www.kaggle.com/code/alexandervc/cafa5-23-groups-and-folds-diamond-igraph)\n- Important comment by [Tilii](https://www.kaggle.com/tilii7): The idea conceptually sound. The problem will likely arise in execution. some proteins will have many homologous sequences, and others will have none.\n- [moo]() Attempted re splitting uniformly. Using the suggested clustering command on the mmseqs README:\n> mmseqs easy-cluster examples/DB.fasta clusterRes tmp --min-seq-id 0.5 -c 0.8 --cov-mode 1\n\n`--cov-mode 1` should do clustering similarly to how you described above, which if I understood correctly should keep similar proteins together regardless of length.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F11298796%2F11bc4782c751744c88bdfbeec3d8ea9f%2FScreenshot%202023-05-12%20at%208.11.53%20AM.png?generation=1683904343421260&alt=media)\n\n- [Norix](https://www.kaggle.com/norixmb) also commented that most clustering algorithms only care about the \"uniqueness\" of the cluster representatives. This means that members of two different clusters might still be more similar than whatever threshold was used for the clustering of the representatives.\n_____\n\n##### [The metric is calculated with: prop_mode='fill' or prop_mode='max' ?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/419127) By [Alexander Chervov](https://www.kaggle.com/alexandervc)\n\nThere are two modes for the \"propagation\": one is \"fill\", another is \"max\":\n\n```preds = pred_parser(preds, ontologies, gt, prop_mode='fill', max_terms=500)```\n\n**Question:** In the current competition the default mode \"fill\" is used , is it true?\n\n_____\n\n\n##### [One question about weighted precision](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/407470) By [AndrewTsai](https://www.kaggle.com/andrewtsai0406)\n\nQuestion: Is the precision in weighted F-measures (for MF, BP, and CC) is always going to be one since there is no negative label but absent label?\n\n**Answer: ([Thaweewat R](https://www.kaggle.com/thaweewatboy))**\n\n> In the Positive-Unlabeled learning setup for this competition, the precision will not always be one. Predicting all 1500 GO terms for each test protein sequence would increase false positives, lowering precision. Instead, focus on developing a model that accurately identifies relevant GO terms while balancing precision and recall to achieve a high F-measure score.\n\n_____\n\n##### [Introduction to Protein Sequences(Synthesis and Prediction) using BioPython](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/411789) By [Arun Munagala](https://www.kaggle.com/arunmunagala)\n\n- [Arun Munagala](https://www.kaggle.com/arunmunagala) shares a notebook using Biopython for Protein Synthesis and Prediction.\n- [notebook](https://www.kaggle.com/code/arunmunagala/protein-synthesis-and-clustering-with-biopython?scriptVersionId=130350951).\n\n_____\n\n##### [GO_terms_not_in_train](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403213) By [MT](https://www.kaggle.com/mtinti)\n\nImportant note by [MT](https://www.kaggle.com/mtinti) regarding GO terms with high weights that do not appear in the training set.\n\n[notebook](https://www.kaggle.com/code/mtinti/go-terms-not-in-train/notebook?scriptVersionId=126704504)\n\n**Explanation (From the hosts):**\n>\n> This is true. To explain why that happens, let's consider how IA is calculated\n>\n> ia(v) = \\log_2 \\frac{1}{\\mathrm{Pr}(v|\\mathcal{Pa}(v))}\n> We use the training set (train_terms.tsv) as the empirical distribution that approximates the denominator in this equation. Since it's an empirical distribution, we regularize counts by adding a count of 1 to every term. This will avoid dividing by 0 for unseen terms.\n>\n> Let's sat term X doesn't appear in the training set and its IA is large. This means that there are many proteins in the dataset that are annotated with the parent term(s) of X,\n>\n> ia(X) = \\log_2\\left(\\frac{\\text{number of proteins with parent term(s) of } X}{\\text{number of proteins with term } X}\\right)\n> For some unseen X the denominator would be 0, but with our regularization it's 1. log_2(large number/1) = relatively large number.\n>\n> For example, here is one term I just looked up. Term GO:2001081 does not appear in train_terms.tsv. It has one parent term (GO:0030247) which appears in 142 proteins in the training set. IA(GO:2001081)= 7.15987 = log_2( (142+1)/(0+1))\n\n_____\n\n##### [Obsolete IDs](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403320) By [MT](https://www.kaggle.com/mtinti)\n\n[MT](https://www.kaggle.com/mtinti) is asking about a protein ID (A2RUG3) that is present only in the test set and now obsolete in UniProt. Can we eliminate such ids from our predictions?\n\n**Answer (From the hosts):**\n\n> We strongly recommend not excluding any IDs while generating predictions.\n\n_____\n\n##### [What is the difference between a 6-digit and a 10-digit EntryID (unique protein number)?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405785) By [Akki](https://www.kaggle.com/aesoptacit)\n\n**Answers Summary:**\n\n- The primary difference between the 6-digit and 10-digit EntryIDs is the database they are associated with in UniProt.\n- UniProt consists of two main sections: Swiss-Prot (6-digit) and TrEMBL (10-digit).\n- TrEMBL contains computationally annotated protein sequences derived from coding sequences in nucleotide sequence databases, but they have not been manually reviewed and annotated by UniProt curators like Swiss-Prot entries.\n- There is no hard rule dictating the length of the UniProt AC identifier. ACs in Swiss-Prot can be either 6 or 10 digits long.\n- The length of the UniProt AC does not necessarily determine the status or age of the protein entry.\n- Older entries tend to have 6-character ACs, which might have been manually checked and moved to Swiss-Prot, while newer entries may have 10-character ACs and might be part of TrEMBL.\n- UniProt ACs started with O, P, or Q but later expanded to include all 26 letters, and then further extended to 10 characters.\n- For the purposes of this competition, there is no practical difference between the 6-digit and 10-digit EntryIDs. The two identifiers are primarily used to understand the history and organization of protein entries in UniProt.\n\n_____\n\n##### ['U' in the protein sequencies](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409962) By [Ann Antonova](https://www.kaggle.com/aantonova)\n\n- From the overview: \"Proteins are large molecules composed of **20 **types of building-blocks known as amino acids\". But some proteins contain 21 letters, including 'U'. What does it mean?\n- X: some unusual and rare amino acid. The exact aa can be found in the text annotating the protein in swissprot. Those are typically so rare, that a single letter was never assigned to them.\n- Z: either glutamic acid (E) or glutamine (Q)\n- B: either aspartate (D) or asparagine (N)\n- U stands for unknown. Sometimes during sequencing there are stretches of DNA bases that are not properly resolved, and N is used as a generic replacement for [A,T,C,G]. When such a DNA sequence is translated into a protein, there is no way to assign it a known amino-acid.\n- X is unknown/any amino acid.\n_____\n\n\n##### [ESM2 fine-tuning baseline (LB=0.383)](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/415980) By [MST](https://www.kaggle.com/mst8823)\n[MST](https://www.kaggle.com/mst8823) shares a fine-tuning baseline for ESM2 [link](https://www.kaggle.com/code/mst8823/cafa5-esm2-fine-tuning-baseline)\n\n- Fine-tuned on Colab Pro+ achieving a cv score of 0.4990 (Evaluation code provided by the hosts)\n\n_____\n\n##### [Competition Evaluation Metric. How is it calculated with respect to threshold value?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/417248) By [Afolabi A](https://www.kaggle.com/lequestion)\n\n**Question:** How is the evaluation metric calculated with respect to the threshold value (tau)?\n\n> How is the evaluation metric calculated with respect to tau?\n> Is tau swept over a grid of vaules between 1 and 0, is tau a fixed number?\n\n**Answers (Comments):**\n- https://www.kaggle.com/code/sergeifironov/validate-ridge\n- https://github.com/BioComputingUP/CAFA-evaluator\n\n_____\n\n##### [The MFO imbalance problem](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418456) By [ZXMKCD](https://www.kaggle.com/zmcxjt)\n\nInteresting insight: [ZXMKCD](https://www.kaggle.com/zmcxjt) noticed that the local evaluations of BPO and CCO terms correlate well with the test set scores, but this is not the case for MFO terms.\n\n- On this post, the author is unsure whether to trust their local evaluations or stick to the test evaluations, given the poor correlation for MFO terms.\n\nNo answers yet..\n\n_____\n\n\n##### [About this competition?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403058) By [yunsuxiaozi](https://www.kaggle.com/yunsuxiaozi)\n\n[yunsuxiaozi](https://www.kaggle.com/yunsuxiaozi) asking about prior biology knowledge and how relevant it is for this competition.\n\n**Answer (From the hosts):**\n- Suggested reading the following [link](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/403203)\n\n_____\n\n\n##### [What does \"published\" mean for the test superset?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405898) By [h-wit](https://www.kaggle.com/halfwit)\n\n**Three clarifications on this post (from the hosts):**\n\n> Proteins having one or more of their functions published by researchers during the curation phase of the competition will comprise the future test set.\n\nThat's a bit of a misnomer. It's not that the GO term will be published, but rather that the protein will have a database entry associated with that GO term using an experimental validation where there wasn't such an association before. As pointed out in other discussions, there are experimental annotations out there in the literature that were not curated yet into the database.\n\n> Eg, can someone look at conference abstracts/posters, dissertations, (or perhaps NIH grants, if that is available) to guess which proteins may soon be added?\n\nYou have just described an ongoing effort for two decades of automated biocuratrion efforts. There is a whole body of literature on that, e.g. https://pubmed.ncbi.nlm.nih.gov/23514326/\n\n> Is it considered valid in this competition to also do \"Information Extraction\"?\n\nYou can use any information you like, as long as it's public, as elaborated in the Rules.\n\n_____\n\n\n##### [biological background](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/407730) By [yassine zarwal](https://www.kaggle.com/yassinezarwal)\n\nThe question raised in this post is whether having a biological background or solid understanding is necessary for this competition.\n\n**Suggestions (In the comments):**\n\n- Read papers on the subject and learn how researchers have implemented their models to solve similar problems.\n- Explore discussions on the platform where useful resources are shared, and take the time to read them.\n- Consider using language model embeddings, as they can provide valuable insights even without prior knowledge.\n\n_____\n\n\n##### [How to Select the Best Protein Embedding Features in T5 and Other Feature Extraction Transformers?](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409952) By [Capoo Cat](https://www.kaggle.com/lau01b)\n\n[Capoo Cat](https://www.kaggle.com/lau01b) is facing a problem where the accuracy of the model using T5 embedding feature data for proteins is stuck.\n\n\n- Suggestions given by others:\n  - **GO term imbalance** There might be an imbalance in the GO term labels and sparsity of the target space. Suggested reweighting specific labels or balancing the set during training to avoid overfitting.\n  - **Label Correlation:** Exploring solutions that incorporate label correlations, as GO terms are highly correlated in specific cases.\n  - **Fine-tuning T5 to your own needs:** Suggested unfreezing layers of the T5 model to make it more flexible.\n_____\n\n\n##### [How was the train set selected? Swiss-Prot vs TrEMBL and curated annotations.](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/416745) By [Darek Kłeczek](https://www.kaggle.com/thedrcat)\n\nIn [this post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/416745), [Darek Kłeczek](https://www.kaggle.com/thedrcat) raises a question about how the train set was selected for the competition.\n\n[MT](https://www.kaggle.com/mtinti) response that the answer could be found [here](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/405085#2236274)\n\n_____\n\n##### [Use of GO prediction software](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/418494) By [ZXMKCD](https://www.kaggle.com/zmcxjt)\n\nFor model building we can use published tools like BLAST, protein language models, and AlphaGO2 that predicts various biochemical aspects of proteins.\nBut does this extend to models that directly predict protein GO terms if they are publicly available? Can we use the results of such models when creating our ensemble predictions for this competition?\n\n**Answer (From the hosts):**\n\n> In one word: yes. Be advised of the Winner License clause in the rules though.\n\n_____\n\n##### [Finetune a LLM on 2 GPUs](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/419056) By [Simon Veitner](https://www.kaggle.com/simonveitner)\n\n**Finetune a LLM on 2 GPUs**\n\nIn this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/419056), [Simon Veitner](https://www.kaggle.com/simonveitner) shared code for finetuning a protein language model on 2 GPUs.\n\nThe LB score achieved from training on 1 fold without any finetuning is 0.329, but the post encourages others to tune hyperparameters, explore different models, and report any interesting findings or mistakes in the notebook.\n\nYou can find the code [here](https://www.kaggle.com/simonveitner/finetuning-on-2-gpus).\n\n\n_____\n\n##### [Everything you need to know | CAFA Protein Prediction](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/420931) By [AyushS9020](https://www.kaggle.com/ayushs9020)\n\nThis detailed discussion provides efficient resources for newcomers to catch up with the competition.\nIt includes an advisory section, field knowledge, data, and a pre written DataLoader.\n\n**Highly suggested read**\n\n_____\n\n\n##### [Impact of Different Protein structures on the Protein functioning](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/406602) By [Niti95](https://www.kaggle.com/niti95)\n\nThis post raises some interesting questions:\n\n- If Protein sequence is same but the structures(Secondary, Tertiary, Quarternary) are different then the function of the Protein changes.\n- Do we have any information of these structure in the data?\n- Do we have any information on which structure is the most important one to impact the protein functionig?\n\n**Answer ([Tilii](https://www.kaggle.com/tilii7)):**\n- A short answer to your question is that for this competition you probably don't need to worry about alternative protein structures.\n\n_____\n\n##### [Feature Construction For Machine Learning Models](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409498) By [NotSid](https://www.kaggle.com/notsid)\n\nIn this [post](https://www.kaggle.com/competitions/cafa-5-protein-function-prediction/discussion/409498), the author seeks guidance on how to construct features optimally for protein function prediction models using non-deep learning approaches.\n\n**Answers:**\n\n- Embeddings from language models work well. Check out the links for more details. [link](https://www.nature.com/articles/s41598-020-80786-0), [link](https://github.com/Rostlab/goPredSim)\n- Another option would be to use a transformer protein language model embeddings as features. [notebook](https://www.kaggle.com/code/viktorfairuschin/esm-2-embeddings-starter) (Using [ESM-2 embeddings](https://github.com/facebookresearch/esm) and [this dataset](https://www.kaggle.com/datasets/sergeifironov/t5embeds))\n- Use TF-IDF to capture the statistics of the amino-acids that appear the most in the dataset.\n\n"
  }
}