--- 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).