File size: 2,660 Bytes
4691fb1
 
baf7da5
 
 
4691fb1
baf7da5
 
 
 
 
4691fb1
 
baf7da5
 
485fb6e
baf7da5
4691fb1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
baf7da5
4691fb1
baf7da5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
---
tags:
- protein
- stability
- mutation-effects
library_name: pytorch
license: mit
datasets:
- OATML-Markslab/ProteinGym_v1
base_model:
- biohub/ESMC-600M
---

# Citation

If you use this model, please consider citing the manuscript ([available on arxiv.org](https://arxiv.org/abs/2610.00742))

# StabilityArc

This repository contains the StabilityArc inference code and the all-66 stability decoder checkpoint. StabilityArc uses frozen ESMC-600M sequence embeddings to predict single amino-acid substitution effects. ESMC-600M is downloaded separately from its [upstream model page](https://huggingface.co/biohub/esmc-600m-2024-12); its weights are not included here.

## Files

- `checkpoints/stabilityarc.pt`: trained StabilityArc decoder and its 66 training protein IDs.
- `stabilityarc/`: ESMC encoder interface, decoder, and sequence inference API.
- `pyproject.toml`: installation requirements for these inference files.

No benchmark data, fold checkpoints, manuscript, or hosted Space are included.

## Installation

Download this repository and install from its directory (Python 3.10+; CUDA recommended for ESMC-600M):

```bash
python -m pip install huggingface_hub
```

```python
import subprocess
import sys
from huggingface_hub import snapshot_download

repo_dir = snapshot_download("aaronfeller/StabilityArc")
subprocess.check_call([sys.executable, "-m", "pip", "install", repo_dir])
```

The first prediction downloads ESMC-600M weights and requires network access.

## Inference

```python
from pathlib import Path
import torch
from stabilityarc.inference import StabilityArcPredictor

device = "cuda" if torch.cuda.is_available() else "cpu"
predictor = StabilityArcPredictor(Path(repo_dir) / "checkpoints/stabilityarc.pt", device=device)
rows = predictor.predict("ACDEFGHIKLMNPQRSTVWY")
print(rows[0])
```

Supply a sequence containing only the 20 standard amino acids. The API returns all 19 non-wild-type substitutions at each 1-based position. Larger `stabilityarc_stability_score` values indicate predicted greater stability; `stabilityarc_predicted_ddG` is the negative of that score, **not a calibrated experimental kcal/mol measurement**.

## Scope and citation

This checkpoint was trained on stability assays from 66 ProteinGym proteins for inference on external proteins. The manuscript's protein-held-out ProteinGym results used separate held-out checkpoints and cannot be reproduced with this all-66 checkpoint.

Feller, Aaron L., Andrew D. Ellington, and Claus O. Wilke. 2026. **StabilityArc: Decoding Protein Sequence Embeddings into Generalizable Stability Landscapes**.

MIT license. ESMC-600M has separate upstream terms.