Benchmarks
How to read this page
The metric is Spearman correlation between predicted and measured effect within an assay. Assays are aggregated the ProteinGym way (per protein, then per function type, then overall), with 95% intervals from 10,000 bootstrap resamples of assays. Two models are compared only by a paired bootstrap of their difference on the same assays, so the charts show differences with their intervals, never two bars side by side (ADR 0014). A hollow marker is a difference whose interval includes 0: the data do not show which model is better there.
Zero-shot models
Protein language models scored without any assay data: ESM-2 at three sizes, its wild-type marginal (one pass, what live scoring uses), SaProt (sequence plus AF2 structure tokens) and their ensemble. SaProt and the ensemble need a structure, so their comparisons run on the assays that have one.
Paired differences in Spearman, zero-shot
213–217 assays (per row)- ESM-2 150M − ESM-2 35M217 assays+0.071 [+0.059, +0.084]
- ESM-2 650M − ESM-2 150M217 assays+0.031 [+0.023, +0.041]
- ESM-2 35M − ESM-2 35M, wild-type marginal217 assays+0.008 [+0.006, +0.011]
- ESM-2 150M − ESM-2 150M, wild-type marginal217 assays+0.005 [+0.002, +0.007]
- ESM-2 650M − ESM-2 650M, wild-type marginal217 assays+0.005 [+0.001, +0.008]
- SaProt 650M − ESM-2 650M213 assays+0.046 [+0.028, +0.062]
- Ensemble (ESM-2 650M + SaProt 650M) − SaProt 650M213 assays+0.006 [−0.002, +0.014]
- Ensemble (ESM-2 650M + SaProt 650M) − ESM-2 650M213 assays+0.052 [+0.042, +0.061]
Difference in Spearman (A − B), 95% paired bootstrap interval. Dashed line: no difference.
| Model | Assays | Spearman | Own 95% CI |
|---|---|---|---|
| ESM-2 35M | 217 | 0.311 | [0.285, 0.338] |
| ESM-2 150M | 217 | 0.382 | [0.358, 0.408] |
| ESM-2 650M | 217 | 0.413 | [0.389, 0.441] |
| ESM-2 35M, wild-type marginal | 217 | 0.303 | [0.277, 0.329] |
| ESM-2 150M, wild-type marginal | 217 | 0.377 | [0.354, 0.403] |
| ESM-2 650M, wild-type marginal | 217 | 0.408 | [0.386, 0.436] |
| SaProt 650M | 213 | 0.460 | [0.442, 0.483] |
| Ensemble (ESM-2 650M + SaProt 650M) | 213 | 0.466 | [0.447, 0.490] |
Supervised models against zero-shot
Per-assay models trained on the assay's own measurements, under ProteinGym's five-fold cross-validation. Random folds put variants of the same position in training and test; modulo and contiguous hold out whole positions, so the model predicts residues it never saw. Each run is compared with a zero-shot model run through the same folds: SaProt for runs that use structure features, ESM-2 650M otherwise. The deployed model is Ridge, sequence + structure.
The supervised ladder: run − zero-shot comparator, per split
198–217 assays (per row)Random split (positions seen in training)
- One-hot ridge217 assays · vs Zero-shot ESM-2 650M+0.196 [+0.158, +0.234]
- Ridge, sequence217 assays · vs Zero-shot ESM-2 650M+0.299 [+0.267, +0.329]
- Ridge, sequence + structure213 assays · vs Zero-shot SaProt 650M+0.263 [+0.239, +0.286]
- LightGBM-PCA, sequence217 assays · vs Zero-shot ESM-2 650M+0.318 [+0.286, +0.349]
- LightGBM-PCA, sequence + structure213 assays · vs Zero-shot SaProt 650M+0.287 [+0.263, +0.309]
- MLP (MSE), sequence + structure198 assays · vs Zero-shot SaProt 650M+0.303 [+0.281, +0.323]
- MLP (RankNet), sequence + structure198 assays · vs Zero-shot SaProt 650M+0.303 [+0.282, +0.323]
Difference in pooled Spearman, 95% paired bootstrap interval. Dashed line: no difference.
Modulo split (unseen positions (every fifth))
- One-hot ridge217 assays · vs Zero-shot ESM-2 650M−0.406 [−0.442, −0.379]
- Ridge, sequence217 assays · vs Zero-shot ESM-2 650M+0.126 [+0.093, +0.151]
- Ridge, sequence + structure213 assays · vs Zero-shot SaProt 650M+0.135 [+0.109, +0.156]
- LightGBM-PCA, sequence217 assays · vs Zero-shot ESM-2 650M+0.119 [+0.090, +0.143]
- LightGBM-PCA, sequence + structure213 assays · vs Zero-shot SaProt 650M+0.124 [+0.099, +0.143]
- MLP (MSE), sequence + structure198 assays · vs Zero-shot SaProt 650M+0.163 [+0.147, +0.178]
- MLP (RankNet), sequence + structure198 assays · vs Zero-shot SaProt 650M+0.154 [+0.139, +0.168]
Difference in pooled Spearman, 95% paired bootstrap interval. Dashed line: no difference.
Contiguous split (unseen positions (blocks))
- One-hot ridge217 assays · vs Zero-shot ESM-2 650M−0.429 [−0.473, −0.394]
- Ridge, sequence217 assays · vs Zero-shot ESM-2 650M+0.060 [+0.027, +0.090]
- Ridge, sequence + structure213 assays · vs Zero-shot SaProt 650M+0.092 [+0.065, +0.115]
- LightGBM-PCA, sequence217 assays · vs Zero-shot ESM-2 650M+0.050 [+0.022, +0.073]
- LightGBM-PCA, sequence + structure213 assays · vs Zero-shot SaProt 650M+0.072 [+0.043, +0.096]
- MLP (MSE), sequence + structure198 assays · vs Zero-shot SaProt 650M+0.111 [+0.094, +0.126]
- MLP (RankNet), sequence + structure198 assays · vs Zero-shot SaProt 650M+0.105 [+0.091, +0.118]
Difference in pooled Spearman, 95% paired bootstrap interval. Dashed line: no difference.
Each run's own Spearman, per split (table)
| Model | Assays | Spearman | Own 95% CI |
|---|---|---|---|
| One-hot ridge | 217 | 0.608 | [0.587, 0.635] |
| Ridge, sequence | 217 | 0.711 | [0.695, 0.732] |
| Ridge, sequence + structure | 213 | 0.721 | [0.705, 0.741] |
| LightGBM-PCA, sequence | 217 | 0.731 | [0.714, 0.752] |
| LightGBM-PCA, sequence + structure | 213 | 0.745 | [0.730, 0.763] |
| MLP (MSE), sequence + structure | 198 | 0.762 | [0.746, 0.779] |
| MLP (RankNet), sequence + structure | 198 | 0.762 | [0.747, 0.779] |
| Zero-shot ESM-2 650M | 217 | 0.412 | [0.389, 0.441] |
| Zero-shot SaProt 650M | 213 | 0.458 | [0.441, 0.481] |
| Model | Assays | Spearman | Own 95% CI |
|---|---|---|---|
| One-hot ridge | 217 | 0.006 | [−0.014, 0.022] |
| Ridge, sequence | 217 | 0.538 | [0.511, 0.564] |
| Ridge, sequence + structure | 213 | 0.593 | [0.571, 0.617] |
| LightGBM-PCA, sequence | 217 | 0.531 | [0.506, 0.557] |
| LightGBM-PCA, sequence + structure | 213 | 0.582 | [0.559, 0.605] |
| MLP (MSE), sequence + structure | 198 | 0.622 | [0.604, 0.640] |
| MLP (RankNet), sequence + structure | 198 | 0.613 | [0.596, 0.631] |
| Zero-shot ESM-2 650M | 217 | 0.412 | [0.388, 0.442] |
| Zero-shot SaProt 650M | 213 | 0.458 | [0.440, 0.483] |
| Model | Assays | Spearman | Own 95% CI |
|---|---|---|---|
| One-hot ridge | 217 | −0.014 | [−0.043, 0.011] |
| Ridge, sequence | 217 | 0.475 | [0.444, 0.507] |
| Ridge, sequence + structure | 213 | 0.553 | [0.528, 0.581] |
| LightGBM-PCA, sequence | 217 | 0.464 | [0.436, 0.495] |
| LightGBM-PCA, sequence + structure | 213 | 0.532 | [0.503, 0.565] |
| MLP (MSE), sequence + structure | 198 | 0.570 | [0.551, 0.592] |
| MLP (RankNet), sequence + structure | 198 | 0.565 | [0.546, 0.585] |
| Zero-shot ESM-2 650M | 217 | 0.414 | [0.390, 0.444] |
| Zero-shot SaProt 650M | 213 | 0.461 | [0.441, 0.485] |
Ridge, sequence + structure − Zero-shot SaProt 650M, by assay size
7–74 assays (per row)Random split (positions seen in training)
- < 200 variants8 assays+0.116 [−0.050, +0.298]
- 200-299 variants7 assays+0.143 [−0.009, +0.299]
- 300-999 variants42 assays+0.258 [+0.216, +0.302]
- 1000-1999 variants74 assays+0.282 [+0.247, +0.317]
- 2000-4999 variants38 assays+0.268 [+0.227, +0.312]
- ≥ 5000 variants44 assays+0.295 [+0.238, +0.353]
Difference in pooled Spearman, 95% paired bootstrap interval. Dashed line: no difference.
Modulo split (unseen positions (every fifth))
- < 200 variants8 assays−0.194 [−0.410, +0.016]
- 200-299 variants7 assays+0.100 [−0.006, +0.243]
- 300-999 variants42 assays+0.157 [+0.127, +0.189]
- 1000-1999 variants74 assays+0.177 [+0.147, +0.208]
- 2000-4999 variants38 assays+0.143 [+0.114, +0.177]
- ≥ 5000 variants44 assays+0.180 [+0.143, +0.219]
Difference in pooled Spearman, 95% paired bootstrap interval. Dashed line: no difference.
Contiguous split (unseen positions (blocks))
- < 200 variants8 assays−0.244 [−0.444, −0.046]
- 200-299 variants7 assays+0.018 [−0.043, +0.079]
- 300-999 variants42 assays+0.137 [+0.109, +0.168]
- 1000-1999 variants74 assays+0.155 [+0.127, +0.185]
- 2000-4999 variants38 assays+0.096 [+0.064, +0.130]
- ≥ 5000 variants44 assays+0.121 [+0.086, +0.158]
Difference in pooled Spearman, 95% paired bootstrap interval. Dashed line: no difference.
Gain per function type
Ridge, sequence + structure − Zero-shot SaProt 650M, per function type
213 assays in 5 function typesRandom split (positions seen in training)
- Activity42 assays+0.202 [+0.159, +0.238]
- Binding13 assays+0.287 [+0.194, +0.380]
- Expression18 assays+0.242 [+0.195, +0.285]
- Organismal fitness74 assays+0.284 [+0.245, +0.322]
- Stability66 assays+0.300 [+0.280, +0.319]
Difference in pooled Spearman, 95% paired bootstrap interval. Dashed line: no difference.
Modulo split (unseen positions (every fifth))
- Activity42 assays+0.120 [+0.087, +0.147]
- Binding13 assays · gain not shown+0.076 [−0.033, +0.172]
- Expression18 assays+0.120 [+0.089, +0.148]
- Organismal fitness74 assays+0.172 [+0.134, +0.202]
- Stability66 assays+0.187 [+0.170, +0.203]
Difference in pooled Spearman, 95% paired bootstrap interval. Dashed line: no difference.
Contiguous split (unseen positions (blocks))
- Activity42 assays+0.090 [+0.063, +0.113]
- Binding13 assays · gain not shown+0.010 [−0.106, +0.121]
- Expression18 assays+0.071 [+0.040, +0.101]
- Organismal fitness74 assays+0.126 [+0.092, +0.153]
- Stability66 assays+0.162 [+0.145, +0.179]
Difference in pooled Spearman, 95% paired bootstrap interval. Dashed line: no difference.
Do the prediction intervals hold?
Each supervised prediction carries 80% and 90% intervals (CV+, a conformal method). Coverage is the share of held-out measurements that fall inside their interval, measured on test folds the intervals never saw. The calibration folds were either split-matched (split like the test: whole positions held out under modulo and contiguous) or random. The design was fixed before any coverage was computed (ADR 0024). The deployed intervals are split-matched.
Test-fold coverage: split-matched against random calibration
213 assays80% intervals
- Random split213 assays · below target: 0 split-matched, 0 randommatched 0.819
random 0.818 - Modulo split213 assays · below target: 1 split-matched, 95 randommatched 0.816
random 0.699 - Contiguous split213 assays · below target: 0 split-matched, 138 randommatched 0.815
random 0.673
Coverage on held-out test folds. Dashed line: nominal 80%.
90% intervals
- Random split213 assays · below target: 0 split-matched, 0 randommatched 0.911
random 0.911 - Modulo split213 assays · below target: 1 split-matched, 59 randommatched 0.909
random 0.828 - Contiguous split213 assays · below target: 0 split-matched, 86 randommatched 0.908
random 0.806
Coverage on held-out test folds. Dashed line: nominal 90%.
The deployed landscapes also report coverage of measured variants by their out-of-fold intervals (0.800 at 80%, 0.900 at 90% over 198 assays). That holds by construction and is not evidence; the test-fold coverage above is (ADR 0026, weak point 11).
These are functional effects measured in laboratory DMS assays, not clinical pathogenicity. How the numbers were made, and their limits: How it works.