Spaces:
Running on Zero
Running on Zero
| 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). | |