GO function prediction (Swiss-Prot 2025H2)

protein
protein-ml/protein-function-go-prediction Task: multi-label-classification Visibility: PUBLIC
OverviewLeaderboard

Leaderboard

Fmax (cellular component, probe)

↑ higher is better · probe · atlas-n100-v1

The same, over the 50 cellular-component terms.

Best in the catalogue: 0.756 (the best visible result here, not a state of the art). Ranks are the server's: ties share a rank. A ≠ marks a row whose n differs from the board's usual n (100). Floors are trivial baselines scored on the same items, shown unranked.

# Model Value 95% CI n Source Overlap
1 protein-ml/esm2-t36-3b-ur50d 0.756 best [0.705, 0.812] 100 reproduced unknown
2 protein-ml/esm2-35m-protein-cellular-component 0.755 [0.709, 0.813] 100 reproduced unknown
3 protein-ml/esm2-t33-650m-ur50d 0.754 [0.701, 0.814] 100 reproduced unknown
4 protein-ml/prot-t5-xl-half-uniref50-enc 0.742 [0.694, 0.803] 100 reproduced unknown
4 protein-ml/prot-t5-xl-uniref50 0.742 [0.694, 0.803] 100 reproduced unknown
6 protein-ml/prot-bert 0.738 [0.683, 0.795] 100 reproduced unknown
7 protein-ml/esm-protein-localization 0.735 [0.680, 0.797] 100 reproduced unknown
8 protein-ml/progen2-base 0.732 [0.682, 0.791] 100 reproduced unknown
9 protein-ml/protgpt2 0.728 [0.675, 0.791] 100 reproduced unknown
10 protein-ml/esm2-35m-protein-biological-process 0.728 [0.675, 0.790] 100 reproduced unknown
11 protein-ml/esm2-150m-protein-molecular-function 0.727 [0.672, 0.784] 100 reproduced unknown
12 protein-ml/amplify-120m 0.723 [0.671, 0.780] 100 reproduced unknown
13 protein-ml/esm2-t30-150m-ur50d 0.722 [0.671, 0.784] 100 reproduced unknown
14 protein-ml/amplify-350m 0.719 [0.667, 0.775] 100 reproduced unknown
15 protein-ml/esm2-t12-35m-ur50d 0.718 [0.663, 0.780] 100 reproduced unknown
16 protein-ml/progen2-small 0.713 [0.660, 0.773] 100 reproduced unknown
17 protein-ml/esm2-t6-8m-ur50d 0.699 [0.644, 0.763] 100 reproduced unknown
— kmer-protein Reference floor, not a hub model; unranked 0.643 [0.592, 0.701] 100 floor
Secondary metrics (6) · probe · context, not ranked

Micro AUPR (molecular function, probe)

↑ higher is better · probe

DeepFRI's micro-averaged area under the precision-recall curve over every scored (protein, term) pair of the 50 molecular function terms, of the same per-term logistic heads; proteins without a true term in the ontology left out, as for Fmax.

Model Value 95% CI n Source Overlap
protein-ml/esm2-150m-protein-molecular-function 0.875 best [0.813, 0.934] 100 reproduced unknown
protein-ml/esm2-35m-protein-biological-process 0.756 [0.688, 0.830] 100 reproduced unknown
protein-ml/esm2-t6-8m-ur50d 0.729 [0.635, 0.820] 100 reproduced unknown
protein-ml/esm-protein-localization 0.718 [0.629, 0.815] 100 reproduced unknown
protein-ml/progen2-small 0.713 [0.631, 0.794] 100 reproduced unknown
protein-ml/protgpt2 0.706 [0.618, 0.801] 100 reproduced unknown
protein-ml/esm2-35m-protein-cellular-component 0.695 [0.618, 0.771] 100 reproduced unknown
protein-ml/progen2-base 0.674 [0.588, 0.769] 100 reproduced unknown
protein-ml/esm2-t12-35m-ur50d 0.670 [0.594, 0.758] 100 reproduced unknown
protein-ml/esm2-t36-3b-ur50d 0.652 [0.576, 0.754] 100 reproduced unknown
protein-ml/amplify-120m 0.652 [0.558, 0.753] 100 reproduced unknown
protein-ml/esm2-t30-150m-ur50d 0.637 [0.547, 0.736] 100 reproduced unknown
protein-ml/prot-t5-xl-half-uniref50-enc 0.625 [0.554, 0.704] 100 reproduced unknown
protein-ml/prot-t5-xl-uniref50 0.625 [0.554, 0.704] 100 reproduced unknown
protein-ml/amplify-350m 0.623 [0.523, 0.726] 100 reproduced unknown
protein-ml/esm2-t33-650m-ur50d 0.615 [0.532, 0.714] 100 reproduced unknown
protein-ml/prot-bert 0.556 [0.474, 0.645] 100 reproduced unknown
kmer-protein Reference floor, not a hub model; unranked 0.419 [0.382, 0.465] 100 floor

Smin (molecular function, probe)

↓ lower is better · bits · probe

CAFA's Smin over the 50 molecular function terms, of the same per-term logistic heads: the minimum over thresholds of the distance (remaining uncertainty, misinformation), each term weighted by its information content in the 500 train proteins; lower is better.

Model Value 95% CI n Source Overlap
protein-ml/esm2-150m-protein-molecular-function 1.727 best [1.080, 2.467] 100 reproduced unknown
protein-ml/esm2-35m-protein-biological-process 2.565 [1.822, 3.195] 100 reproduced unknown
protein-ml/protgpt2 2.887 [2.157, 3.601] 100 reproduced unknown
protein-ml/progen2-small 2.964 [2.099, 3.740] 100 reproduced unknown
protein-ml/progen2-base 2.992 [2.391, 3.670] 100 reproduced unknown
protein-ml/esm2-35m-protein-cellular-component 3.121 [2.347, 3.973] 100 reproduced unknown
protein-ml/esm-protein-localization 3.192 [2.277, 4.080] 100 reproduced unknown
protein-ml/esm2-t6-8m-ur50d 3.206 [2.246, 4.008] 100 reproduced unknown
protein-ml/esm2-t12-35m-ur50d 3.289 [2.491, 4.058] 100 reproduced unknown
protein-ml/esm2-t36-3b-ur50d 3.361 [2.526, 4.063] 100 reproduced unknown
protein-ml/amplify-120m 3.569 [2.652, 4.354] 100 reproduced unknown
protein-ml/amplify-350m 3.584 [2.728, 4.348] 100 reproduced unknown
protein-ml/esm2-t30-150m-ur50d 3.702 [2.859, 4.331] 100 reproduced unknown
protein-ml/prot-t5-xl-half-uniref50-enc 3.804 [2.904, 4.454] 100 reproduced unknown
protein-ml/prot-t5-xl-uniref50 3.804 [2.904, 4.454] 100 reproduced unknown
protein-ml/esm2-t33-650m-ur50d 3.855 [2.998, 4.565] 100 reproduced unknown
protein-ml/prot-bert 4.243 [3.366, 5.075] 100 reproduced unknown
kmer-protein Reference floor, not a hub model; unranked 5.041 [4.116, 5.744] 100 floor

Micro AUPR (biological process, probe)

↑ higher is better · probe

DeepFRI's micro-averaged area under the precision-recall curve over every scored (protein, term) pair of the 50 biological process terms, of the same per-term logistic heads; proteins without a true term in the ontology left out, as for Fmax.

Model Value 95% CI n Source Overlap
protein-ml/esm2-35m-protein-biological-process 0.595 best [0.409, 0.743] 100 reproduced unknown
protein-ml/esm2-150m-protein-molecular-function 0.500 [0.361, 0.652] 100 reproduced unknown
protein-ml/esm2-35m-protein-cellular-component 0.470 [0.328, 0.603] 100 reproduced unknown
protein-ml/esm2-t6-8m-ur50d 0.467 [0.295, 0.609] 100 reproduced unknown
protein-ml/esm-protein-localization 0.467 [0.320, 0.630] 100 reproduced unknown
protein-ml/amplify-350m 0.465 [0.320, 0.604] 100 reproduced unknown
protein-ml/amplify-120m 0.462 [0.317, 0.591] 100 reproduced unknown
protein-ml/esm2-t12-35m-ur50d 0.430 [0.297, 0.567] 100 reproduced unknown
protein-ml/protgpt2 0.428 [0.308, 0.535] 100 reproduced unknown
protein-ml/progen2-small 0.409 [0.271, 0.566] 100 reproduced unknown
protein-ml/progen2-base 0.409 [0.281, 0.551] 100 reproduced unknown
protein-ml/esm2-t30-150m-ur50d 0.399 [0.255, 0.556] 100 reproduced unknown
protein-ml/esm2-t36-3b-ur50d 0.380 [0.283, 0.498] 100 reproduced unknown
protein-ml/esm2-t33-650m-ur50d 0.380 [0.240, 0.530] 100 reproduced unknown
protein-ml/prot-bert 0.377 [0.250, 0.512] 100 reproduced unknown
protein-ml/prot-t5-xl-half-uniref50-enc 0.371 [0.251, 0.509] 100 reproduced unknown
protein-ml/prot-t5-xl-uniref50 0.371 [0.251, 0.509] 100 reproduced unknown
kmer-protein Reference floor, not a hub model; unranked 0.327 [0.231, 0.470] 100 floor

Smin (biological process, probe)

↓ lower is better · bits · probe

CAFA's Smin over the 50 biological process terms, of the same per-term logistic heads: the minimum over thresholds of the distance (remaining uncertainty, misinformation), each term weighted by its information content in the 500 train proteins; lower is better.

Model Value 95% CI n Source Overlap
protein-ml/esm2-35m-protein-biological-process 4.842 best [3.520, 5.862] 100 reproduced unknown
protein-ml/esm2-150m-protein-molecular-function 5.626 [4.245, 6.779] 100 reproduced unknown
protein-ml/esm2-t12-35m-ur50d 5.760 [4.304, 7.021] 100 reproduced unknown
protein-ml/amplify-120m 5.807 [4.142, 7.443] 100 reproduced unknown
protein-ml/esm2-t33-650m-ur50d 5.861 [4.221, 7.756] 100 reproduced unknown
protein-ml/esm-protein-localization 5.918 [4.162, 7.379] 100 reproduced unknown
protein-ml/prot-bert 5.918 [4.217, 7.829] 100 reproduced unknown
protein-ml/esm2-35m-protein-cellular-component 5.979 [4.317, 7.450] 100 reproduced unknown
protein-ml/esm2-t6-8m-ur50d 5.999 [4.547, 7.214] 100 reproduced unknown
protein-ml/esm2-t30-150m-ur50d 6.062 [4.238, 7.687] 100 reproduced unknown
protein-ml/amplify-350m 6.072 [4.405, 7.407] 100 reproduced unknown
protein-ml/esm2-t36-3b-ur50d 6.120 [4.351, 7.711] 100 reproduced unknown
protein-ml/progen2-base 6.127 [4.393, 7.920] 100 reproduced unknown
protein-ml/protgpt2 6.429 [4.569, 7.880] 100 reproduced unknown
protein-ml/progen2-small 6.521 [4.596, 7.995] 100 reproduced unknown
protein-ml/prot-t5-xl-half-uniref50-enc 6.816 [4.728, 8.377] 100 reproduced unknown
protein-ml/prot-t5-xl-uniref50 6.816 [4.728, 8.377] 100 reproduced unknown
kmer-protein Reference floor, not a hub model; unranked 7.064 [4.956, 8.612] 100 floor

Micro AUPR (cellular component, probe)

↑ higher is better · probe

DeepFRI's micro-averaged area under the precision-recall curve over every scored (protein, term) pair of the 50 cellular component terms, of the same per-term logistic heads; proteins without a true term in the ontology left out, as for Fmax.

Model Value 95% CI n Source Overlap
protein-ml/esm2-35m-protein-cellular-component 0.758 best [0.695, 0.821] 100 reproduced unknown
protein-ml/prot-t5-xl-half-uniref50-enc 0.751 [0.694, 0.812] 100 reproduced unknown
protein-ml/prot-t5-xl-uniref50 0.751 [0.694, 0.812] 100 reproduced unknown
protein-ml/esm2-t33-650m-ur50d 0.732 [0.668, 0.796] 100 reproduced unknown
protein-ml/esm2-t36-3b-ur50d 0.722 [0.656, 0.791] 100 reproduced unknown
protein-ml/prot-bert 0.719 [0.651, 0.782] 100 reproduced unknown
protein-ml/esm2-t30-150m-ur50d 0.716 [0.653, 0.780] 100 reproduced unknown
protein-ml/esm2-35m-protein-biological-process 0.716 [0.652, 0.784] 100 reproduced unknown
protein-ml/progen2-base 0.715 [0.648, 0.781] 100 reproduced unknown
protein-ml/esm-protein-localization 0.714 [0.645, 0.784] 100 reproduced unknown
protein-ml/amplify-120m 0.713 [0.653, 0.772] 100 reproduced unknown
protein-ml/amplify-350m 0.712 [0.649, 0.774] 100 reproduced unknown
protein-ml/protgpt2 0.707 [0.639, 0.772] 100 reproduced unknown
protein-ml/esm2-150m-protein-molecular-function 0.693 [0.623, 0.763] 100 reproduced unknown
protein-ml/esm2-t12-35m-ur50d 0.688 [0.617, 0.757] 100 reproduced unknown
protein-ml/progen2-small 0.677 [0.607, 0.745] 100 reproduced unknown
protein-ml/esm2-t6-8m-ur50d 0.673 [0.603, 0.741] 100 reproduced unknown
kmer-protein Reference floor, not a hub model; unranked 0.592 [0.530, 0.662] 100 floor

Smin (cellular component, probe)

↓ lower is better · bits · probe

CAFA's Smin over the 50 cellular component terms, of the same per-term logistic heads: the minimum over thresholds of the distance (remaining uncertainty, misinformation), each term weighted by its information content in the 500 train proteins; lower is better.

Model Value 95% CI n Source Overlap
protein-ml/esm2-t36-3b-ur50d 3.092 best [2.384, 3.767] 100 reproduced unknown
protein-ml/esm2-35m-protein-cellular-component 3.116 [2.456, 3.770] 100 reproduced unknown
protein-ml/esm2-t33-650m-ur50d 3.145 [2.440, 3.901] 100 reproduced unknown
protein-ml/prot-t5-xl-half-uniref50-enc 3.179 [2.446, 3.843] 100 reproduced unknown
protein-ml/prot-t5-xl-uniref50 3.179 [2.446, 3.843] 100 reproduced unknown
protein-ml/prot-bert 3.222 [2.505, 3.914] 100 reproduced unknown
protein-ml/esm2-35m-protein-biological-process 3.242 [2.547, 3.897] 100 reproduced unknown
protein-ml/progen2-base 3.281 [2.557, 3.922] 100 reproduced unknown
protein-ml/esm-protein-localization 3.362 [2.547, 4.073] 100 reproduced unknown
protein-ml/esm2-150m-protein-molecular-function 3.365 [2.553, 4.126] 100 reproduced unknown
protein-ml/amplify-120m 3.418 [2.639, 4.167] 100 reproduced unknown
protein-ml/amplify-350m 3.445 [2.696, 4.102] 100 reproduced unknown
protein-ml/progen2-small 3.458 [2.724, 4.111] 100 reproduced unknown
protein-ml/esm2-t30-150m-ur50d 3.460 [2.662, 4.100] 100 reproduced unknown
protein-ml/esm2-t12-35m-ur50d 3.481 [2.665, 4.208] 100 reproduced unknown
protein-ml/protgpt2 3.504 [2.705, 4.227] 100 reproduced unknown
protein-ml/esm2-t6-8m-ur50d 3.621 [2.825, 4.407] 100 reproduced unknown
kmer-protein Reference floor, not a hub model; unranked 3.976 [3.247, 4.639] 100 floor

Protocol

What is measured. Which Gene Ontology terms describe a protein, from its sequence alone, scored the way CAFA scores it: protein-centric Fmax, separately for the three ontologies (molecular function, biological process, cellular component).

Per-ontology scoring. Each ontology is scored over its own 50 columns of the 150-term vector: the registry's fmax takes params.label_range: [start, stop], so the three metrics of a protocol read one predictions frame. (This benchmark was shipped blocked on that parameter in phase 2 and unblocked when it landed; the definition did not change.)

Data. Two UniProtKB REST answers, frozen at release 2026_03 (02-September-2026) and sha256-pinned: reviewed (Swiss-Prot) entries with at least one experimental GO annotation (go_exp:*) created after 2025-07-01 — 167 entries, the test window — and the same query over 2022 — 660 entries, the train window. Every train protein therefore predates every test protein, the temporal split CAFA uses. Propagation uses go-basic.obo of the dated 2026-08-05 GO release.

Labels. A protein's experimental terms (CAFA's experimental evidence codes plus their high-throughput counterparts: EXP, IDA, IPI, IMP, IGI, IEP, TAS, IC, HTP, HDA, HMP, HGI, HEP) are mapped through alt_id, obsolete terms are dropped, and each is propagated to all its ancestors over is_a and part_of inside its own namespace. The three ontology roots and GO:0005515 (protein binding, the uninformative IPI catch-all) are excluded.

Term space. Fixed by the train window alone, so the label space cannot encode anything about the test proteins: per ontology, the 50 most frequent propagated terms among the 660 train-window entries (ties by GO id). The label vector is MF's 50 terms, then BP's, then CC's — the label_range slices above. go_terms on every item lists them in that order, and is what a native predictor is asked to score.

Items. Proteins with no term of the space in any ontology are left out (824 remain: 166 test, 658 train). 100 test and 500 train items by seed-hash rank. label_mask is True on an ontology's block only when the protein has an experimental annotation in that ontology, so a protein annotated only for localisation is scored on CC and ignored on MF and BP — CAFA's rule. In the frozen windows that means roughly 55 test proteins with MF terms, 33 with BP and 134 with CC (the counts a bootstrap interval has to live with).

Probe (fmax_*_probe). Frozen mean-pooled last-layer embeddings; one binary logistic head per term (C by stratified CV inside train), fit on the train proteins annotated in that term's ontology. A term with fewer than 2 positive or 2 negative such proteins gets that set's positive rate as a constant score, and the notes list those terms.

Zero-shot (fmax_*_zero_shot, capability predict.go). A model's own GO head scores the term space; the reply gives go_scores (a term → score mapping) or one column per GO id, and terms it does not score count as 0. The executor does not drive native predict ops for zero-shot cells yet, a second reason these cells cannot run today.

Metrics. Protein-centric Fmax per ontology: for each threshold τ in 0.01..1.00, precision averaged over the proteins with at least one prediction and recall over the proteins with at least one true term, then the maximum F1 over τ. 95 % bootstrap interval, 1,000 resamples of proteins.

Secondary metrics. aupr_micro_*: DeepFRI's micro-averaged AUPR over the scored (protein, term) pairs of one ontology's block, proteins without a true term in the block left out as for Fmax. smin_*: CAFA's Smin, the minimum over τ of sqrt(ru² + mi²) (remaining uncertainty and misinformation, averaged over proteins), each term weighted by its information content IC(f) = -log2 P(f | parents of f), in bits, lower is better. The IC is computed once from the propagated labels of the frozen subset's 500 train proteins annotated in the ontology, with each term's parents taken as its nearest ancestors on the 50-term axis (no parent on the axis: the ontology root), and written into the metric's params.ic (go_information_content.json next to this file, rebuilt by scripts/build_go_information_content.py). A native head's cell holds its own ontology's three metrics; the others are omitted, as for Fmax.

Caveats. 50 terms per ontology is a small, deliberately frequent slice of GO (CAFA scores thousands of terms), so these numbers are far above a full-GO Fmax and are not comparable with CAFA's. A model pretrained on UniProt text or on GO annotations may have seen the test proteins' functions — entries created after 2025-07-01 postdate most released protein LMs, but their sequences often exist in UniParc or in close homologues, so this is a temporal split, not a homology-filtered one. No sequence-identity filter is applied between the windows: a test protein may have a close train homologue, which a probe exploits (the standard, and standardly criticised, GO prediction setting).

Data

  • uniprot: api_frozen ?, licence CC-BY-4.0, catalogued as protein-ml/uniprot-knowledgebase
  • go: url https://release.geneontology.org/2026-08-05/ontology/go-basic.obo, licence CC-BY-4.0

Subset

  • seed 20261006
  • test: 100 item(s)
  • train: 500 item(s)
  • results at atlas-n100-v1 use subset 7e49b56db4673808

Metrics

  • fmax_mf_zero_shot — Fmax (molecular function, native head); protocol zero_shot; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples
  • fmax_bp_zero_shot — Fmax (biological process, native head); protocol zero_shot; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples
  • fmax_cc_zero_shot — Fmax (cellular component, native head); protocol zero_shot; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples
  • aupr_micro_mf_zero_shot — Micro AUPR (molecular function, native head); protocol zero_shot; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples
  • smin_mf_zero_shot — Smin (molecular function, native head); protocol zero_shot; lower is better; range ≥ 0.0; 95% bootstrap CI, 1000 resamples
  • aupr_micro_bp_zero_shot — Micro AUPR (biological process, native head); protocol zero_shot; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples
  • smin_bp_zero_shot — Smin (biological process, native head); protocol zero_shot; lower is better; range ≥ 0.0; 95% bootstrap CI, 1000 resamples
  • aupr_micro_cc_zero_shot — Micro AUPR (cellular component, native head); protocol zero_shot; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples
  • smin_cc_zero_shot — Smin (cellular component, native head); protocol zero_shot; lower is better; range ≥ 0.0; 95% bootstrap CI, 1000 resamples
  • fmax_mf_probe — Fmax (molecular function, probe); protocol probe; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples
  • fmax_bp_probe — Fmax (biological process, probe); protocol probe; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples
  • fmax_cc_probe — Fmax (cellular component, probe); protocol probe; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples
  • aupr_micro_mf_probe — Micro AUPR (molecular function, probe); protocol probe; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples
  • smin_mf_probe — Smin (molecular function, probe); protocol probe; lower is better; range ≥ 0.0; 95% bootstrap CI, 1000 resamples
  • aupr_micro_bp_probe — Micro AUPR (biological process, probe); protocol probe; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples
  • smin_bp_probe — Smin (biological process, probe); protocol probe; lower is better; range ≥ 0.0; 95% bootstrap CI, 1000 resamples
  • aupr_micro_cc_probe — Micro AUPR (cellular component, probe); protocol probe; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples
  • smin_cc_probe — Smin (cellular component, probe); protocol probe; lower is better; range ≥ 0.0; 95% bootstrap CI, 1000 resamples

Sample

Three test-window proteins (input: the sequence; expected output: a score per GO term of the 150-term space, scored only where the mask is True):

item_idorganismresiduesscored intrue terms in the space
Q04230Escherichia coli507MF, CC7 MF, 4 CC
J9VED5Cryptococcus neoformans H99483MF, CC8 MF, 4 CC
A0A1D8PJ72Candida albicans SC5314915MF, BP, CC8 MF, 14 BP, 10 CC

J9VED5's molecular-function block is 1 on GO:0003824 (catalytic activity), GO:0016740 (transferase), GO:0140096 (catalytic activity acting on a protein), GO:0016772, GO:0016773, GO:0016301 (kinase), GO:0004672 (protein kinase) and GO:0106310 — its one experimental annotation propagated up the ontology — and 0 on the other 42 MF terms; its BP block is masked out entirely, because the entry has no experimental BP annotation. A predictor scoring GO:0004672 at 0.9 and the unrelated terms below 0.3 reaches a high Fmax on this protein; one scoring every term 1.0 reaches recall 1 with precision 8/50.