File size: 2,881 Bytes
e401aae
cf62ce5
 
e401aae
cf62ce5
e401aae
2719465
e401aae
2719465
cf62ce5
 
2719465
 
 
 
 
 
 
e401aae
 
2719465
cf62ce5
2719465
 
cf62ce5
2719465
 
 
 
cf62ce5
2719465
cf62ce5
2719465
 
 
 
 
 
 
 
 
 
7de8980
 
1279e1c
 
 
 
2719465
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
title: Nesso-1 Binding Affinity
emoji: 🧬
colorFrom: gray
colorTo: purple
sdk: gradio
sdk_version: 6.22.0
app_file: app.py
short_description: Protein-ligand binding affinity with Nesso-1
python_version: "3.12"
startup_duration_timeout: 1h
models:
  - recursionpharma/nesso
  - facebook/esm2_t33_650M_UR50D
tags:
  - binding-affinity
  - protein-ligand
  - drug-discovery
---

# Nesso-1 — binding affinity prediction

Predict protein–ligand binding affinity from **an amino-acid sequence and a SMILES
string** — no MSA and no input structure required.

[Nesso-1](https://huggingface.co/recursionpharma/nesso) is a coarse-grained cofolding
model from Valence Labs (Recursion), released under Apache-2.0
([code](https://github.com/recursionpharma/nesso),
[technical report](https://www.biorxiv.org/content/10.64898/2026.08.01.742196v1)).

## What the Space runs

The app reproduces the reference `nesso predict` pipeline
([docs/prediction.md](https://github.com/recursionpharma/nesso/blob/main/docs/prediction.md))
directly in-process, so the numbers match the CLI:

- RDKit ETKDG conformer generation for the ligand and CCD-backed protein tokenisation,
- ESM-2 650M (`facebook/esm2_t33_650M_UR50D`) single-sequence embeddings,
- Nesso-1 trunk with 5 recycling steps, two-stage pocket refinement
  (`refine_protein_cutoff=22 Å`, 256-token budget), `affinity_protein_cutoff=15 Å`,
- `bf16-mixed` precision, and the model's own `predict_step` / `affinity.json` scalars.

cuEquivariance kernels are not installed (they are CUDA-12 only), so the triangle
updates run on Nesso's reference pure-PyTorch path — the `--no_kernels` equivalent.
Numbers can therefore differ marginally from a kernel-accelerated run. Predictions are
exactly reproducible for a given seed within one GPU session; because inference runs in
`bf16`, values can shift slightly (≈0.01–0.02 in `affinity_pred_value`) between different
GPU allocations.

## Reading the output

`affinity_pred_value` is log₁₀(IC₅₀ / µM): **−3 ≈ 1 nM** (strong binder), **0 ≈ 1 µM**,
**+2 ≈ 100 µM** (weak / non-binder). `affinity_probability_binary` is the binder
classification probability. `entropy_crop_pl` is the model's confidence in the predicted
protein–ligand interface — **0.0 means the ligand could not be confidently placed and the
prediction should not be trusted**.

Research use only. Not for clinical or diagnostic use.

## Examples

- *Nesso tutorial complex + L-tyrosine* — the authors' own example from
  [`tutorial/smiles.yaml`](https://github.com/recursionpharma/nesso/blob/main/tutorial/smiles.yaml)
  (Apache-2.0).
- ABL1 / EGFR kinase domains and CDK2 — sequences from
  [UniProt](https://www.uniprot.org) (P00519, P00533, P24941; CC-BY 4.0).
- Imatinib, gefitinib, staurosporine and caffeine SMILES from
  [PubChem](https://pubchem.ncbi.nlm.nih.gov) (public domain).