Protein annotation leaderboard

claims.yaml

One file per tool, claims/<tool>.yaml, lists the tool's claims. Each claim has the claim in plain words, the result that would retire it (kill), the data it is tested on (scope), and a test. The file never states a verdict. scripts/claims.py runs each test and sets the status:

A test may carry a verdict: the wording of its verdict line, with the resolved numbers filled in. Without one, the line is the test's own result.

A claim retired by a record test is dated with the date of that inventory record. A claim retired by a table test has no date, because the tables are recomputed on every build and the build cannot tell when the claim was first disproved. The "last disproved" date on a card counts only dated results.

The full schema: claims/schema.json. The first claim of claims/kmerseek.yaml:

  - id: phmmer-parity-mammals
    claim: Parity with phmmer inside mammals
    kill: Fmax more than 0.05 from phmmer's on any of the 6 mammals
    scope: Swiss-Prot features, raw calls, setting hp_thomas_dill2_k24_lcFalse, 998 human queries
    test:
      kind: table
      experiment: qfo_region_midi_plus
      truth_source: Swiss-Prot features
      dedup_or_raw: raw
      stratum_axis: all
      stratum_bin: all
      metric: fmax
      tool: kmerseek
      setting: hp_thomas_dill2_k24_lcFalse
      against: {tool: hmmer3_phmmer, setting: default}
      targets: [QfO ptroglodytes, QfO rnorvegicus, QfO clupus, QfO btaurus, QfO mouse, QfO mdomestica]
      kill_if: {abs_difference_above: 0.05}
    context:
      - label: on Pfam domains, the best kmerseek setting for each mammal
        test:
          kind: table
          experiment: qfo_region_midi_plus
          truth_source: Pfam-A domain instances
          dedup_or_raw: raw
          stratum_axis: all
          stratum_bin: all
          metric: fmax
          tool: kmerseek
          setting: best_per_target
          against: {tool: hmmer3_phmmer, setting: default}
          targets: [QfO ptroglodytes, QfO rnorvegicus, QfO clupus, QfO btaurus, QfO mouse, QfO mdomestica]
          kill_if: {abs_difference_above: 0.05}
      - label: settings that pass on Swiss-Prot features (raw or dedup)
        test:
          kind: table_count_passing
          experiment: qfo_region_midi_plus
          truth_source: Swiss-Prot features
          stratum_axis: all
          stratum_bin: all
          metric: fmax
          tool: kmerseek
          against: {tool: hmmer3_phmmer, setting: default}
          targets: [QfO ptroglodytes, QfO rnorvegicus, QfO clupus, QfO btaurus, QfO mouse, QfO mdomestica]
          kill_if: {abs_difference_above: 0.05}
    evidence: {label: leaderboard, href: index.html}

Badge and CI check

Every push and pull request runs python scripts/claims.py --check in a GitHub Action (.github/workflows/claims.yml). It fails when a file breaks the schema, a quote no longer matches its record, or a table test cannot find its rows. A second job rebuilds the site from data/ and fails if any page differs from the committed one. The build also writes a badge per tool from the same verdicts:

claims for kmerseek: 1 alive, 2 retired, 3 untested

![claims](https://seanome.github.io/protein-function-annotation-leaderboard/badges/claims-kmerseek.svg)