{
  "id": 659320,
  "title": "Exact Command For Evaluating Submission",
  "url": "/competitions/cafa-6-protein-function-prediction/discussion/659320",
  "author_name": "",
  "post_date": "2025-12-11T22:20:18.418237400Z",
  "votes": 9,
  "comment_count": 9,
  "views": 0,
  "content": "<p>What exact command is run to evaluate our code using the CAFA-6-PK-Evaluator? Is it this?</p>\n<p><code>cafaeval -ia accretion_file ontology_file prediction_folder ground_truth_file</code></p>\n<p>Are any other flags used in this command? I'm particularly interested in what type of propagation is used (\"fill\" or \"max\")</p>",
  "messages": [
    {
      "id": "3372239",
      "postDate": "12/11/2025 22:20:18",
      "content": "<p>What exact command is run to evaluate our code using the CAFA-6-PK-Evaluator? Is it this?</p>\n<p><code>cafaeval -ia accretion_file ontology_file prediction_folder ground_truth_file</code></p>\n<p>Are any other flags used in this command? I'm particularly interested in what type of propagation is used (\"fill\" or \"max\")</p>",
      "rawMarkdown": "What exact command is run to evaluate our code using the CAFA-6-PK-Evaluator? Is it this?\n\n`cafaeval -ia accretion_file ontology_file prediction_folder ground_truth_file`\n\nAre any other flags used in this command? I'm particularly interested in what type of propagation is used (\"fill\" or \"max\")",
      "votes": null
    },
    {
      "id": "3372280",
      "postDate": "12/11/2025 23:17:39",
      "content": "<p>We average the evaluation over three settings: No-knowledge, limited-knowledge, and partial-knowledge. See <a href=\"https://www.kaggle.com/competitions/cafa-6-protein-function-prediction/overview/evaluation\" target=\"_blank\">https://www.kaggle.com/competitions/cafa-6-protein-function-prediction/overview/evaluation</a>.\nTo reproduce results, you need to construct ground truth files for each setting. That is, the subset of ground truth annotations that fall into each setting.</p>\n<p>Then, the evaluation uses the following arguments:  </p>\n<pre><code>cafaelval -ia IA.tsv go-basic.obo prediction_folder ground_truth_file_setting  -prop-th_step 0.01 -no_orphans -max_terms 500\n</code></pre>\n<p>For partial-knowledge, you need to provide the terms that will get excluded from the evaluation because they were previously know. These are captured in the <code>train_terms.tsv</code> file, or an equivalent if you are constructing your own time-based data splits. The file can be passed in for the other settings, it will just be ignored if the ground truth proteins don't appear in the \"known\" file. The evaluation call adds the <code>known</code> argument: </p>\n<pre><code>cafaelval -ia IA.tsv go-basic.obo prediction_folder ground_truth_file_PK -known train_terms.tsv -prop-th_step 0.01 -no_orphans -max_terms 500\n</code></pre>",
      "rawMarkdown": "We average the evaluation over three settings: No-knowledge, limited-knowledge, and partial-knowledge. See [https://www.kaggle.com/competitions/cafa-6-protein-function-prediction/overview/evaluation](https://www.kaggle.com/competitions/cafa-6-protein-function-prediction/overview/evaluation).\nTo reproduce results, you need to construct ground truth files for each setting. That is, the subset of ground truth annotations that fall into each setting.\n\nThen, the evaluation uses the following arguments:  \n```\ncafaelval -ia IA.tsv go-basic.obo prediction_folder ground_truth_file_setting  -prop fill -th_step 0.01 -no_orphans -max_terms 500\n```\n\n\nFor partial-knowledge, you need to provide the terms that will get excluded from the evaluation because they were previously know. These are captured in the `train_terms.tsv` file, or an equivalent if you are constructing your own time-based data splits. The file can be passed in for the other settings, it will just be ignored if the ground truth proteins don't appear in the \"known\" file. The evaluation call adds the `known` argument: \n\n```\ncafaelval -ia IA.tsv go-basic.obo prediction_folder ground_truth_file_PK -known train_terms.tsv -prop fill -th_step 0.01 -no_orphans -max_terms 500\n```",
      "votes": null
    },
    {
      "id": "3372297",
      "postDate": "12/11/2025 23:44:36",
      "content": "<p>Thank you so much!</p>",
      "rawMarkdown": "Thank you so much!",
      "votes": null
    },
    {
      "id": "3381304",
      "postDate": "12/24/2025 08:03:34",
      "content": "<p>Hi <a href=\"https://www.kaggle.com/claradepaolis\" target=\"_blank\">@claradepaolis</a> . Thanks for the provided clarification. Can you please highlight the difference between \"limited knowledge\" and \"partial knowledge\". As I understood, for each ontology we can have 2 types of proteins:</p>\n<ul>\n<li>test protein that occurs in train set. For this one we apply partial knowledge evaluation (second command)</li>\n<li>unseen test protein. For this one we use use simple no knowledge (first command)</li>\n</ul>\n<p>Finally, we have mean of 6 F-scores (3 ontologies x 2 setups).</p>\n<p>But I am still confused about what is the limited knowledge setup and how is it evaluated?</p>\n<p>Thanks </p>",
      "rawMarkdown": "Hi @claradepaolis . Thanks for the provided clarification. Can you please highlight the difference between \"limited knowledge\" and \"partial knowledge\". As I understood, for each ontology we can have 2 types of proteins:\n\n- test protein that occurs in train set. For this one we apply partial knowledge evaluation (second command)\n- unseen test protein. For this one we use use simple no knowledge (first command)\n\nFinally, we have mean of 6 F-scores (3 ontologies x 2 setups).\n\nBut I am still confused about what is the limited knowledge setup and how is it evaluated?\n\nThanks",
      "votes": null
    },
    {
      "id": "3381436",
      "postDate": "12/24/2025 15:40:07",
      "content": "<p>Proteins that appear in both training data and test superset could either be limited-knowledge or partial-knowledge. </p>\n<p>Example: If protein P12345 had MFO and BPO subontologies annotated (in training data), and gain CCO subontology later, they are <strong>limited-knowledge in CCO</strong> (all CCO annotations are new for this protein). If protein P12345 had all 3 subontologies annotated (in training data), and gain more new annotations in CCO subontology, they are <strong>partial-knowledge in CCO</strong>.</p>\n<p>Overall, it should be a mean of 9 F-scores (3 ontologies x 3 setups). We have 3 ground truth files that correspond to 3 setups, where only the partial-knowledge setup is passed into the cafaevaluator along with a known annotations file to exclude the pre-existing annotations.</p>",
      "rawMarkdown": "Proteins that appear in both training data and test superset could either be limited-knowledge or partial-knowledge. \n\nExample: If protein P12345 had MFO and BPO subontologies annotated (in training data), and gain CCO subontology later, they are **limited-knowledge in CCO** (all CCO annotations are new for this protein). If protein P12345 had all 3 subontologies annotated (in training data), and gain more new annotations in CCO subontology, they are **partial-knowledge in CCO**.\n\nOverall, it should be a mean of 9 F-scores (3 ontologies x 3 setups). We have 3 ground truth files that correspond to 3 setups, where only the partial-knowledge setup is passed into the cafaevaluator along with a known annotations file to exclude the pre-existing annotations.",
      "votes": null
    },
    {
      "id": "3381450",
      "postDate": "12/24/2025 16:07:53",
      "content": "<p>Thanks for your reply, now it is clear to me</p>",
      "rawMarkdown": "Thanks for your reply, now it is clear to me",
      "votes": null
    },
    {
      "id": "3391327",
      "postDate": "01/14/2026 18:00:37",
      "content": "<p>Corrected command: <code>cafaeval</code> instead of <code>cafaelval</code></p>",
      "rawMarkdown": "Corrected command: `cafaeval` instead of `cafaelval`",
      "votes": null
    },
    {
      "id": "3395146",
      "postDate": "01/22/2026 10:43:03",
      "content": "<blockquote>\n  <p>We average the evaluation over three settings: No-knowledge, limited-knowledge, and partial-knowledge. See [<a href=\"https://….\" target=\"_blank\">https://….</a></p>\n<pre><code>cafaelval -ia IA.tsv go-basic.obo prediction_folder ground_truth_file_PK -known train_terms.tsv -prop fill -th_step 0.01 -no_orphans -max_terms 500\n</code></pre>\n  <p>Thank you very much for that clarification. However, for the life of me I cannot find the \"-known\" flag in any of the public branches of cafaeval on github. Did I overlook it? \n  If not, could you share how \"-known\" works, for example regarding propagation of terms? \n  Having serious issues to get a proper validation metric together that can run along model training at the moment.</p>\n</blockquote>",
      "rawMarkdown": "> We average the evaluation over three settings: No-knowledge, limited-knowledge, and partial-knowledge. See [https://....\n> ```\n> cafaelval -ia IA.tsv go-basic.obo prediction_folder ground_truth_file_PK -known train_terms.tsv -prop fill -th_step 0.01 -no_orphans -max_terms 500\n> ```\nThank you very much for that clarification. However, for the life of me I cannot find the \"-known\" flag in any of the public branches of cafaeval on github. Did I overlook it? \nIf not, could you share how \"-known\" works, for example regarding propagation of terms? \nHaving serious issues to get a proper validation metric together that can run along model training at the moment.",
      "votes": null
    },
    {
      "id": "3395301",
      "postDate": "01/22/2026 17:21:25",
      "content": "<p>The github repo linked here <a href=\"https://www.kaggle.com/competitions/cafa-6-protein-function-prediction/overview/evaluation\" target=\"_blank\">https://www.kaggle.com/competitions/cafa-6-protein-function-prediction/overview/evaluation</a> is the one that is used for this competition. \nNamely, <a href=\"https://github.com/claradepaolis/CAFA-evaluator-PK\" target=\"_blank\">https://github.com/claradepaolis/CAFA-evaluator-PK</a>.</p>",
      "rawMarkdown": "The github repo linked here https://www.kaggle.com/competitions/cafa-6-protein-function-prediction/overview/evaluation is the one that is used for this competition. \nNamely, https://github.com/claradepaolis/CAFA-evaluator-PK.",
      "votes": null
    },
    {
      "id": "3395382",
      "postDate": "01/22/2026 21:45:37",
      "content": "<blockquote>\n  <p>Namely, <a href=\"https://github.com/claradepaolis/CAFA-evaluator-PK\" target=\"_blank\">https://github.com/claradepaolis/CAFA-evaluator-PK</a>.</p>\n</blockquote>\n<p>Thank you very much, did not check the exact link and was stalking around the main repo (top google hit) like crazy.</p>",
      "rawMarkdown": "> Namely, https://github.com/claradepaolis/CAFA-evaluator-PK.\n\nThank you very much, did not check the exact link and was stalking around the main repo (top google hit) like crazy.",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 3372280,
      "author_name": "claradepaolis",
      "author_url": "",
      "post_date": "12/11/2025 23:17:39",
      "content": "<p>We average the evaluation over three settings: No-knowledge, limited-knowledge, and partial-knowledge. See <a href=\"https://www.kaggle.com/competitions/cafa-6-protein-function-prediction/overview/evaluation\" target=\"_blank\">https://www.kaggle.com/competitions/cafa-6-protein-function-prediction/overview/evaluation</a>.\nTo reproduce results, you need to construct ground truth files for each setting. That is, the subset of ground truth annotations that fall into each setting.</p>\n<p>Then, the evaluation uses the following arguments:  </p>\n<pre><code>cafaelval -ia IA.tsv go-basic.obo prediction_folder ground_truth_file_setting  -prop-th_step 0.01 -no_orphans -max_terms 500\n</code></pre>\n<p>For partial-knowledge, you need to provide the terms that will get excluded from the evaluation because they were previously know. These are captured in the <code>train_terms.tsv</code> file, or an equivalent if you are constructing your own time-based data splits. The file can be passed in for the other settings, it will just be ignored if the ground truth proteins don't appear in the \"known\" file. The evaluation call adds the <code>known</code> argument: </p>\n<pre><code>cafaelval -ia IA.tsv go-basic.obo prediction_folder ground_truth_file_PK -known train_terms.tsv -prop-th_step 0.01 -no_orphans -max_terms 500\n</code></pre>",
      "votes": null,
      "replies": [
        {
          "id": 3372297,
          "author_name": "sagarneil",
          "author_url": "",
          "post_date": "12/11/2025 23:44:36",
          "content": "<p>Thank you so much!</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 3381304,
          "author_name": "btbpanda",
          "author_url": "",
          "post_date": "12/24/2025 08:03:34",
          "content": "<p>Hi <a href=\"https://www.kaggle.com/claradepaolis\" target=\"_blank\">@claradepaolis</a> . Thanks for the provided clarification. Can you please highlight the difference between \"limited knowledge\" and \"partial knowledge\". As I understood, for each ontology we can have 2 types of proteins:</p>\n<ul>\n<li>test protein that occurs in train set. For this one we apply partial knowledge evaluation (second command)</li>\n<li>unseen test protein. For this one we use use simple no knowledge (first command)</li>\n</ul>\n<p>Finally, we have mean of 6 F-scores (3 ontologies x 2 setups).</p>\n<p>But I am still confused about what is the limited knowledge setup and how is it evaluated?</p>\n<p>Thanks </p>",
          "votes": null,
          "replies": [
            {
              "id": 3381436,
              "author_name": "ahphan",
              "author_url": "",
              "post_date": "12/24/2025 15:40:07",
              "content": "<p>Proteins that appear in both training data and test superset could either be limited-knowledge or partial-knowledge. </p>\n<p>Example: If protein P12345 had MFO and BPO subontologies annotated (in training data), and gain CCO subontology later, they are <strong>limited-knowledge in CCO</strong> (all CCO annotations are new for this protein). If protein P12345 had all 3 subontologies annotated (in training data), and gain more new annotations in CCO subontology, they are <strong>partial-knowledge in CCO</strong>.</p>\n<p>Overall, it should be a mean of 9 F-scores (3 ontologies x 3 setups). We have 3 ground truth files that correspond to 3 setups, where only the partial-knowledge setup is passed into the cafaevaluator along with a known annotations file to exclude the pre-existing annotations.</p>",
              "votes": null,
              "replies": [
                {
                  "id": 3381450,
                  "author_name": "btbpanda",
                  "author_url": "",
                  "post_date": "12/24/2025 16:07:53",
                  "content": "<p>Thanks for your reply, now it is clear to me</p>",
                  "votes": null,
                  "replies": []
                }
              ]
            }
          ]
        },
        {
          "id": 3395146,
          "author_name": "jrsilicon",
          "author_url": "",
          "post_date": "01/22/2026 10:43:03",
          "content": "<blockquote>\n  <p>We average the evaluation over three settings: No-knowledge, limited-knowledge, and partial-knowledge. See [<a href=\"https://….\" target=\"_blank\">https://….</a></p>\n<pre><code>cafaelval -ia IA.tsv go-basic.obo prediction_folder ground_truth_file_PK -known train_terms.tsv -prop fill -th_step 0.01 -no_orphans -max_terms 500\n</code></pre>\n  <p>Thank you very much for that clarification. However, for the life of me I cannot find the \"-known\" flag in any of the public branches of cafaeval on github. Did I overlook it? \n  If not, could you share how \"-known\" works, for example regarding propagation of terms? \n  Having serious issues to get a proper validation metric together that can run along model training at the moment.</p>\n</blockquote>",
          "votes": null,
          "replies": [
            {
              "id": 3395301,
              "author_name": "claradepaolis",
              "author_url": "",
              "post_date": "01/22/2026 17:21:25",
              "content": "<p>The github repo linked here <a href=\"https://www.kaggle.com/competitions/cafa-6-protein-function-prediction/overview/evaluation\" target=\"_blank\">https://www.kaggle.com/competitions/cafa-6-protein-function-prediction/overview/evaluation</a> is the one that is used for this competition. \nNamely, <a href=\"https://github.com/claradepaolis/CAFA-evaluator-PK\" target=\"_blank\">https://github.com/claradepaolis/CAFA-evaluator-PK</a>.</p>",
              "votes": null,
              "replies": [
                {
                  "id": 3395382,
                  "author_name": "jrsilicon",
                  "author_url": "",
                  "post_date": "01/22/2026 21:45:37",
                  "content": "<blockquote>\n  <p>Namely, <a href=\"https://github.com/claradepaolis/CAFA-evaluator-PK\" target=\"_blank\">https://github.com/claradepaolis/CAFA-evaluator-PK</a>.</p>\n</blockquote>\n<p>Thank you very much, did not check the exact link and was stalking around the main repo (top google hit) like crazy.</p>",
                  "votes": null,
                  "replies": []
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "id": 3391327,
      "author_name": "tdoh86",
      "author_url": "",
      "post_date": "01/14/2026 18:00:37",
      "content": "<p>Corrected command: <code>cafaeval</code> instead of <code>cafaelval</code></p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "3372239": "What exact command is run to evaluate our code using the CAFA-6-PK-Evaluator? Is it this?\n\n`cafaeval -ia accretion_file ontology_file prediction_folder ground_truth_file`\n\nAre any other flags used in this command? I'm particularly interested in what type of propagation is used (\"fill\" or \"max\")",
    "3372280": "We average the evaluation over three settings: No-knowledge, limited-knowledge, and partial-knowledge. See [https://www.kaggle.com/competitions/cafa-6-protein-function-prediction/overview/evaluation](https://www.kaggle.com/competitions/cafa-6-protein-function-prediction/overview/evaluation).\nTo reproduce results, you need to construct ground truth files for each setting. That is, the subset of ground truth annotations that fall into each setting.\n\nThen, the evaluation uses the following arguments:  \n```\ncafaelval -ia IA.tsv go-basic.obo prediction_folder ground_truth_file_setting  -prop fill -th_step 0.01 -no_orphans -max_terms 500\n```\n\n\nFor partial-knowledge, you need to provide the terms that will get excluded from the evaluation because they were previously know. These are captured in the `train_terms.tsv` file, or an equivalent if you are constructing your own time-based data splits. The file can be passed in for the other settings, it will just be ignored if the ground truth proteins don't appear in the \"known\" file. The evaluation call adds the `known` argument: \n\n```\ncafaelval -ia IA.tsv go-basic.obo prediction_folder ground_truth_file_PK -known train_terms.tsv -prop fill -th_step 0.01 -no_orphans -max_terms 500\n```",
    "3372297": "Thank you so much!",
    "3381304": "Hi @claradepaolis . Thanks for the provided clarification. Can you please highlight the difference between \"limited knowledge\" and \"partial knowledge\". As I understood, for each ontology we can have 2 types of proteins:\n\n- test protein that occurs in train set. For this one we apply partial knowledge evaluation (second command)\n- unseen test protein. For this one we use use simple no knowledge (first command)\n\nFinally, we have mean of 6 F-scores (3 ontologies x 2 setups).\n\nBut I am still confused about what is the limited knowledge setup and how is it evaluated?\n\nThanks",
    "3381436": "Proteins that appear in both training data and test superset could either be limited-knowledge or partial-knowledge. \n\nExample: If protein P12345 had MFO and BPO subontologies annotated (in training data), and gain CCO subontology later, they are **limited-knowledge in CCO** (all CCO annotations are new for this protein). If protein P12345 had all 3 subontologies annotated (in training data), and gain more new annotations in CCO subontology, they are **partial-knowledge in CCO**.\n\nOverall, it should be a mean of 9 F-scores (3 ontologies x 3 setups). We have 3 ground truth files that correspond to 3 setups, where only the partial-knowledge setup is passed into the cafaevaluator along with a known annotations file to exclude the pre-existing annotations.",
    "3381450": "Thanks for your reply, now it is clear to me",
    "3391327": "Corrected command: `cafaeval` instead of `cafaelval`",
    "3395146": "> We average the evaluation over three settings: No-knowledge, limited-knowledge, and partial-knowledge. See [https://....\n> ```\n> cafaelval -ia IA.tsv go-basic.obo prediction_folder ground_truth_file_PK -known train_terms.tsv -prop fill -th_step 0.01 -no_orphans -max_terms 500\n> ```\nThank you very much for that clarification. However, for the life of me I cannot find the \"-known\" flag in any of the public branches of cafaeval on github. Did I overlook it? \nIf not, could you share how \"-known\" works, for example regarding propagation of terms? \nHaving serious issues to get a proper validation metric together that can run along model training at the moment.",
    "3395301": "The github repo linked here https://www.kaggle.com/competitions/cafa-6-protein-function-prediction/overview/evaluation is the one that is used for this competition. \nNamely, https://github.com/claradepaolis/CAFA-evaluator-PK.",
    "3395382": "> Namely, https://github.com/claradepaolis/CAFA-evaluator-PK.\n\nThank you very much, did not check the exact link and was stalking around the main repo (top google hit) like crazy."
  },
  "source": "meta"
}