Skip to content

SPURS

Structure-aware protein stability predictor that computes ddG values for single and multi-residue mutations, with full deep mutational scanning matrix generation.

License: MIT · Molecules: protein · Tasks: property_prediction, stability_prediction

Actions: predict · Variants: 1

At a glance

Use it when

  • You have a 3D structure and need fast, accurate ddG predictions for single or multiple simultaneous mutations with epistatic effects captured
  • You want a complete computational DMS matrix covering all possible single-residue substitutions to guide a directed evolution or rational design campaign
  • You are comparing wild-type and engineered variant sequences and want to quantify the predicted stability difference in kcal/mol
  • You need multi-mutation stability prediction that goes beyond additive approximations to capture synergistic or antagonistic epistatic effects
  • You are filtering large mutation libraries to exclude destabilizing variants before experimental screening, saving time and reagent costs
  • You want to integrate stability prediction into an automated protein design pipeline alongside structure prediction (Chai-1) and sequence design (ProteinMPNN)
Strengths
  • Multi-mutation ddG prediction with per-mutation contributions, capturing pairwise epistatic effects that simple additive models miss -- critical for combinatorial protein engineering
  • Full deep mutational scanning (DMS) matrix generation (L positions x 20 amino acids) in seconds, computationally replicating what saturation mutagenesis experiments measure experimentally
  • Hybrid ESM2-650M + GNN architecture combines evolutionary sequence features with structural context for comprehensive stability assessment
  • Published in Nature Communications (2025): generalizable and scalable stability prediction
  • Variant sequence comparison mode automatically identifies all mutations between wild-type and variant sequences and predicts combined ddG
  • Supports both specific mutation lists and automatic full-DMS scanning in a single predict action, enabling flexible use from targeted queries to comprehensive landscapes
  • T4 GPU requirement (16 GB RAM) provides a good balance of accuracy and cost for structure-based stability prediction
Limitations
  • Requires both sequence and 3D structure as input -- cannot predict stability from sequence alone; use ESM2 log-likelihoods or TemBERTure when no structure is available
  • Very recent model (published 2025) with no applied literature citations yet -- independent validation is limited
  • T4 GPU with 16 GB RAM required -- more resource-intensive than CPU-only alternatives like GEMME for evolutionary variant scoring
  • Training data may under-represent membrane proteins and intrinsically disordered regions, potentially reducing accuracy on these protein types
  • ddG predictions are approximate -- not a replacement for physics-based methods (Rosetta, FoldX) when high-precision energetics are needed for a specific target
  • Single-chain proteins only; multi-chain complex stability and interface mutations require separate treatment
  • No uncertainty quantification on individual ddG predictions -- the model does not provide confidence intervals
Reach for something else when
  • You do not have a 3D structure and cannot generate one -- use GEMME (MSA-based) or ESM2 pseudo-log-likelihoods for sequence-only variant scoring
  • You need high-precision physics-based ddG values for a single critical mutation -- use FoldX or Rosetta ddG protocols for individual high-stakes predictions
  • You need global protein melting temperature (Tm) rather than per-mutation ddG -- use TemBERTure
  • You need variant effect prediction driven purely by evolutionary conservation signals -- use GEMME for MSA-based scoring that captures evolutionary constraint without structural bias
  • You are working with intrinsically disordered proteins that lack a stable reference structure for ddG calculation
  • You need CPU-only inference for cost-sensitive large-scale screening -- GEMME runs on CPU in under 10 minutes

Alternatives

Model Better when Worse when
thermompnn Lighter-weight (8 GB RAM) with a longer peer-reviewed (PNAS) track record for single-mutation ddG; simplest choice when only single-point mutations are needed. Cannot predict multi-mutation ddG or generate combined/epistatic effects; SPURS handles arbitrary simultaneous mutations with per-mutation contribution decomposition and full DMS matrices.
thermompnn_d Provides an explicit epistatic double-mutation mode designed and benchmarked specifically for pairwise mutations. Limited to at most two mutations; SPURS handles arbitrary numbers of simultaneous mutations and per-mutation contribution decomposition.

API & schema

Call an action with POST /api/v1/{slug}/{action} — the request envelope is {"items": [...], "params": {...}} and a success returns {"results": [...]}. See the HTTP API page for the base URL, error shape, and full contract.

predict

Call it

curl -X POST http://127.0.0.1:8000/api/v1/spurs/predict \
  -H "Content-Type: application/json" \
  -d '{
  "items": [
    {
      "sequence": "MKTAYIAKQRQISFVKSHFSRQLEERLGLIE"
    }
  ]
}'

RequestSpursPredictRequest

Field Type Required Constraints Description
items list[SpursPredictRequestItem] yes items 1–4 List of protein sequences and mutations for SPURS prediction
Nested types

SpursPredictRequestItem

Field Type Required Constraints Description
sequence string yes len 1–1024 Protein sequence for SPURS prediction
pdb string | null no Input structure in PDB format. Provide exactly one of pdb or cif.
cif string | null no Input structure in mmCIF format. Provide exactly one of pdb or cif.
chain_id string no len 1–1; default A Single-letter chain identifier within the structure. Defaults to 'A' for single-chain proteins.
mutations list[string] | null no Optional list of mutations (formatted '' with 1-indexed positions) to evaluate. Omit this field to receive a full saturation mutagenesis matrix covering every single-residue substitution.
variant_sequence string | null no Optional variant sequence for automatic mutation calculation. When provided with return_full_dms=False and mutations=None, the system will calculate mutations from the wild-type sequence (in 'sequence' field) to this variant sequence.
return_full_dms boolean no default True When True and mutations is None, returns the full DMS matrix. When False and mutations is None, calculates mutations between the wild-type sequence (sequence field) and variant_sequence, treating them as manual mutations.
Raw JSON Schema
{
  "$defs": {
    "SpursPredictRequestItem": {
      "additionalProperties": false,
      "examples": [
        {
          "chain_id": "A",
          "mutations": [
            "K2L"
          ],
          "pdb": "ATOM ...",
          "sequence": "MKAAVDLKTF"
        },
        {
          "chain_id": "A",
          "mutations": null,
          "pdb": "ATOM ...",
          "return_full_dms": true,
          "sequence": "MKAAVDLKTF"
        },
        {
          "chain_id": "A",
          "mutations": null,
          "pdb": "ATOM ...",
          "return_full_dms": false,
          "sequence": "MKAAVDLKTF",
          "variant_sequence": "MLAAVDLRTF"
        }
      ],
      "properties": {
        "sequence": {
          "description": "Protein sequence for SPURS prediction",
          "maxLength": 1024,
          "minLength": 1,
          "title": "Sequence",
          "type": "string"
        },
        "pdb": {
          "anyOf": [
            {
              "maxLength": 2500000,
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Input structure in PDB format. Provide exactly one of pdb or cif.",
          "title": "Pdb"
        },
        "cif": {
          "anyOf": [
            {
              "maxLength": 2500000,
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Input structure in mmCIF format. Provide exactly one of pdb or cif.",
          "title": "Cif"
        },
        "chain_id": {
          "default": "A",
          "description": "Single-letter chain identifier within the structure. Defaults to 'A' for single-chain proteins.",
          "maxLength": 1,
          "minLength": 1,
          "title": "Chain Id",
          "type": "string"
        },
        "mutations": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional list of mutations (formatted '<WT><position><MT>' with 1-indexed positions) to evaluate. Omit this field to receive a full saturation mutagenesis matrix covering every single-residue substitution.",
          "title": "Mutations"
        },
        "variant_sequence": {
          "anyOf": [
            {
              "maxLength": 1024,
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional variant sequence for automatic mutation calculation. When provided with return_full_dms=False and mutations=None, the system will calculate mutations from the wild-type sequence (in 'sequence' field) to this variant sequence.",
          "title": "Variant Sequence"
        },
        "return_full_dms": {
          "default": true,
          "description": "When True and mutations is None, returns the full DMS matrix. When False and mutations is None, calculates mutations between the wild-type sequence (sequence field) and variant_sequence, treating them as manual mutations.",
          "title": "Return Full Dms",
          "type": "boolean"
        }
      },
      "required": [
        "sequence"
      ],
      "title": "SpursPredictRequestItem",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "items": {
      "description": "List of protein sequences and mutations for SPURS prediction",
      "items": {
        "$ref": "#/$defs/SpursPredictRequestItem"
      },
      "maxItems": 4,
      "minItems": 1,
      "title": "Items",
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "title": "SpursPredictRequest",
  "type": "object"
}

ResponseSpursPredictResponse

Field Type Required Constraints Description
results list[SpursPredictResponseResult] yes SPURS prediction results. Each entry corresponds to one request item and includes either per-mutation ΔΔG values or a full saturation mutagenesis matrix.
Nested types

SpursDDGMatrix

Field Type Required Constraints Description
values list[list[number]] yes ΔΔG matrix in kcal/mol with shape (sequence_length, 20). Rows follow the input sequence order; columns follow amino_acid_axis.
residue_axis list[string] yes Residue labels for each matrix row (wild-type amino acid per sequence position).
amino_acid_axis list[string] no default ['A', 'C', 'D', 'E', 'F', 'G', 'H', 'I'… Order of amino acids for matrix columns (canonical 20-letter alphabet).

SpursPredictResponseResult

Field Type Required Constraints Description
mutations list[string] | null no Specific mutations evaluated. Null indicates the response includes a full ΔΔG matrix covering every single-residue substitution.
ddG number | null no Predicted ΔΔG in kcal/mol for the requested mutation set. Present when one or more explicit mutations were supplied.
ddG_contributions object | null no Per-mutation ΔΔG contributions (kcal/mol) for multi-mutation requests.
ddG_matrix SpursDDGMatrix | null no Complete single-mutation ΔΔG matrix. Provided when mutations are omitted in the request.
Raw JSON Schema
{
  "$defs": {
    "SpursDDGMatrix": {
      "properties": {
        "values": {
          "description": "\u0394\u0394G matrix in kcal/mol with shape (sequence_length, 20). Rows follow the input sequence order; columns follow `amino_acid_axis`.",
          "items": {
            "items": {
              "type": "number"
            },
            "type": "array"
          },
          "title": "Values",
          "type": "array"
        },
        "residue_axis": {
          "description": "Residue labels for each matrix row (wild-type amino acid per sequence position).",
          "items": {
            "type": "string"
          },
          "title": "Residue Axis",
          "type": "array"
        },
        "amino_acid_axis": {
          "description": "Order of amino acids for matrix columns (canonical 20-letter alphabet).",
          "items": {
            "type": "string"
          },
          "title": "Amino Acid Axis",
          "type": "array",
          "default": [
            "A",
            "C",
            "D",
            "E",
            "F",
            "G",
            "H",
            "I",
            "K",
            "L",
            "M",
            "N",
            "P",
            "Q",
            "R",
            "S",
            "T",
            "V",
            "W",
            "Y"
          ]
        }
      },
      "required": [
        "values",
        "residue_axis"
      ],
      "title": "SpursDDGMatrix",
      "type": "object"
    },
    "SpursPredictResponseResult": {
      "properties": {
        "mutations": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Specific mutations evaluated. Null indicates the response includes a full \u0394\u0394G matrix covering every single-residue substitution.",
          "title": "Mutations"
        },
        "ddG": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Predicted \u0394\u0394G in kcal/mol for the requested mutation set. Present when one or more explicit mutations were supplied.",
          "title": "Ddg"
        },
        "ddG_contributions": {
          "anyOf": [
            {
              "additionalProperties": {
                "type": "number"
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Per-mutation \u0394\u0394G contributions (kcal/mol) for multi-mutation requests.",
          "title": "Ddg Contributions"
        },
        "ddG_matrix": {
          "anyOf": [
            {
              "$ref": "#/$defs/SpursDDGMatrix"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Complete single-mutation \u0394\u0394G matrix. Provided when mutations are omitted in the request."
        }
      },
      "title": "SpursPredictResponseResult",
      "type": "object"
    }
  },
  "properties": {
    "results": {
      "description": "SPURS prediction results. Each entry corresponds to one request item and includes either per-mutation \u0394\u0394G values or a full saturation mutagenesis matrix.",
      "items": {
        "$ref": "#/$defs/SpursPredictResponseResult"
      },
      "title": "Results",
      "type": "array"
    }
  },
  "required": [
    "results"
  ],
  "title": "SpursPredictResponse",
  "type": "object"
}

Usage

One-line summary: Structure-aware protein stability predictor that computes ddG values for single and multi-residue mutations, with full deep mutational scanning matrix generation.

Overview

SPURS is a structure-aware protein stability prediction model developed by the Luo Group. It combines ESM2-650M sequence embeddings with 3D structural features to predict the change in free energy (ddG) upon amino acid substitution.

SPURS supports three prediction modes: single-mutation ddG prediction, multi-mutation combined ddG with per-mutation contributions, and full saturation mutagenesis (DMS) matrix generation covering all possible single-residue substitutions.

Architecture

Property Value
Architecture Structure-aware GNN + ESM2-650M
Task ddG prediction (kcal/mol)
Input Protein sequence + 3D structure (PDB/CIF)
Max sequence length 1024 residues
Output ddG values or L x 20 DMS matrix
License MIT

Capabilities & Limitations

CAN be used for: - Predicting ddG for single point mutations - Predicting combined ddG for multiple simultaneous mutations - Generating full saturation mutagenesis (DMS) matrices - Comparing wild-type and variant sequences to quantify stability differences - Screening mutation libraries for stability-preserving variants

CANNOT be used for: - Sequences without 3D structure (requires PDB or CIF input) - Sequences longer than 1024 residues - Multi-chain stability analysis (single chain only) - Predicting catalytic activity, binding affinity, or other functional properties - Non-protein molecules

Other considerations: - Batch size is capped at 4 items per request - Mutations use 1-indexed positions in format <WT><position><MT> (e.g., "M3L") - The full DMS matrix returns L x 20 values (20 canonical amino acids) - GPU memory snapshots are enabled for fast cold starts

Usage Examples

# Single mutation ddG prediction
from models.spurs.schema import SpursPredictRequest, SpursPredictRequestItem

request = SpursPredictRequest(
    items=[
        SpursPredictRequestItem(
            sequence="MKAAVDLKTF",
            pdb=pdb_content,
            chain_id="A",
            mutations=["K2L"],
        )
    ],
)

# Full DMS matrix
request_dms = SpursPredictRequest(
    items=[
        SpursPredictRequestItem(
            sequence="MKAAVDLKTF",
            pdb=pdb_content,
            chain_id="A",
            mutations=None,
            return_full_dms=True,
        )
    ],
)

# Variant sequence comparison
request_variant = SpursPredictRequest(
    items=[
        SpursPredictRequestItem(
            sequence="MKAAVDLKTF",
            pdb=pdb_content,
            chain_id="A",
            variant_sequence="MLAAVDLRTF",
            mutations=None,
            return_full_dms=False,
        )
    ],
)

Architecture & training

Architecture

Model Type & Innovation

SPURS is a structure-aware protein stability prediction model that predicts the change in free energy upon mutation (ddG). It combines ESM2-650M sequence embeddings with 3D structural features through a graph neural network architecture.

The model provides two inference modes: a single-mutation model (SPURS) for predicting individual point mutations and generating full deep mutational scanning (DMS) matrices, and a multi-mutation model (SPURSMulti) for predicting the combined effect of multiple simultaneous mutations.

Parameters & Layers

Component Value
Sequence encoder ESM2-650M (cached locally)
Structure input PDB/CIF parsed by biotite
Single model class SPURS
Multi-mutation model class SPURSMulti
Output dimension 20 (one ddG value per canonical amino acid)
Amino acid alphabet ACDEFGHIKLMNPQRSTVWY (canonical 20)

The model loads SPURS weights from HuggingFace (cyclization9/SPURS) at a pinned revision for reproducibility.

Training Data

Property Details
Source Experimental ddG measurements from protein stability databases
Structure input PDB structures for structural context
Sequence features ESM2-650M embeddings

Training datasets (e.g., ProTherm, Megascale) and set sizes are described in the primary paper (Nature Communications, 2025).

Loss Function & Objective

The model is trained to predict ddG values (change in folding free energy upon mutation) in kcal/mol. Negative ddG indicates stabilizing mutations; positive ddG indicates destabilizing mutations.

Tokenization / Input Processing

Property Details
Sequence validation 20 canonical amino acids
Max sequence length 1024 residues
Structure input PDB or CIF format
Structure parsing biotite (CIF -> PDB conversion if needed)
Mutation format <WT><position><MT> (1-indexed, e.g., "M3L")
Variant sequence Optional auto-calculation of mutations from WT/variant alignment

Performance & Benchmarks

Published Benchmarks

Quantitative benchmark results (Spearman correlation, RMSE on ProTherm/Megascale/S669) are reported in the primary paper (Nature Communications, 2025) and are not reproduced here.

BioLM Verification Results

Test Case Tolerance Status
Single mutation ddG rel_tol 1e-4 PASS
Multi-mutation ddG + contributions rel_tol 1e-4 PASS
Full DMS matrix rel_tol 1e-4 PASS
Variant sequence auto-calculation rel_tol 1e-4 PASS

Comparison to Alternatives

Model Type Key Advantage Key Disadvantage
SPURS (this) Structure-aware GNN Full DMS matrix in single pass, multi-mutation support Requires 3D structure
RaSP Structure-aware Fast DMS generation Different architecture
DDGun3D Structure-aware Established benchmark Older approach
ESM-1v Sequence-only No structure needed No structural context
GEMME Evolutionary MSA-based, interpretable Requires MSA

Error Bars & Confidence

SPURS is deterministic when seeds are set. The same input produces the same output on the same hardware. Multi-mutation predictions use the SPURSMulti model for combined effects rather than simple additivity.

Strengths & Limitations

Pros

  • Full saturation mutagenesis matrix in a single forward pass (20 ddG values per position)
  • Multi-mutation support with per-mutation contribution breakdown
  • Structure-aware -- incorporates 3D context for better accuracy
  • Variant sequence auto-calculation from WT/variant alignment
  • ESM2-650M embeddings cached locally for fast inference

Cons

  • Requires 3D structure input (PDB or CIF)
  • Max sequence length 1024 residues
  • Single chain analysis only
  • Multi-mutation model is separate from single-mutation model
  • GPU required (T4 with 16 GB VRAM)

Known Failure Modes

  • Sequence/structure mismatch: Providing a sequence that does not match the structure chain raises a ValueError
  • Invalid mutations: Mutations referencing wrong wild-type residue or out-of-bounds position are caught at validation
  • No structure provided: Both PDB and CIF missing triggers validation error
  • Empty mutation list: Rejected with explicit error message guiding to full DMS or null

Implementation Details

Inference Pipeline

Request
  |-- 1. Validate sequence (canonical AA, max 1024 residues)
  |-- 2. Validate structure (PDB/CIF, chain_id)
  |-- 3. Validate mutations or variant_sequence
  |-- 4. Materialize structure to PDB file (convert CIF if needed)
  |-- 5. Parse PDB with SPURS parse_pdb
  |-- 6. Single-model forward pass -> ddG matrix [seq_len, 20]
  |-- 7a. If no mutations: return full DMS matrix
  |-- 7b. If single mutation: extract ddG from matrix
  |-- 7c. If multi-mutation: run multi-model for combined ddG
  |-- 8. Return SpursPredictResponse

Memory & Compute Profile

Component Resource
CPU 4 cores
Memory 16 GB RAM
GPU T4 (16 GB VRAM)
Inference time (single protein) ~1-3s (includes ESM2 embedding computation)

Determinism & Reproducibility

Setting Value
torch.manual_seed 42
torch.cuda.manual_seed_all 42
seed_everything 42 (SPURS utility)
torch.no_grad Yes (inference)

Caching Behavior

Response caching is handled externally by the serving infrastructure, not by the model container. GPU memory snapshots are enabled for fast cold starts.

Versions & Changelog

Version Date Changes
v1 2025-09-16 Initial implementation with predict action (single, multi, full DMS)
v1 (updated) 2025-09-24 Added CIF support via biotite conversion
v1 (updated) 2026-01-12 Added variant_sequence auto-calculation mode

Biology

Molecule Coverage

Primary Molecule Type(s)

SPURS operates on single-chain proteins with available 3D structure (experimental or predicted). It predicts the thermodynamic effect of amino acid substitutions on protein stability (ddG in kcal/mol).

Performance characteristics by protein type:

  • Globular proteins: Primary training domain. Best prediction accuracy for well-folded single-domain proteins.
  • Enzymes: Well-suited for evaluating mutations near active sites and in the hydrophobic core.
  • Designed proteins: Applicable to de novo designs with AlphaFold-predicted structures.
  • Multi-domain proteins: Each domain can be analyzed independently (single chain, up to 1024 residues).
  • Membrane proteins: Supported if structure is available, though training data may under-represent transmembrane regions.

Cross-Applicability

Molecule Type Applicability Evidence Caveats
Globular proteins High Primary training domain Best accuracy on well-folded proteins
Enzymes High Active-site mutations well-characterized Catalytic activity not directly predicted
De novo designs Moderate Structure from AlphaFold can be used Training data may not cover novel folds
Antibodies Moderate Can predict stability of individual chains No multi-chain analysis for Fab/scFv complexes
Membrane proteins Low--Moderate Requires structure input Under-represented in training data
Peptides Low Short sequences may lack structural context Minimum structure requirements apply

Biological Problems Addressed

Protein Stability Engineering

Problem: Most random mutations destabilize proteins. In protein engineering, maintaining or improving stability while introducing desired functional mutations is a critical challenge. Experimental measurement of ddG for every possible mutation is prohibitively expensive.

How SPURS helps: The predict action with mutations=None (or return_full_dms=True) returns a complete saturation mutagenesis matrix (L x 20) predicting the ddG for every possible single-residue substitution. This enables computational screening of all mutations before experimental validation.

Biological meaning: Each value in the ddG matrix represents the predicted change in folding free energy (kcal/mol) for substituting the wild-type residue at that position with each of the 20 canonical amino acids. Negative values indicate stabilizing mutations; positive values indicate destabilizing ones. A mutation with ddG < -1 kcal/mol is considered meaningfully stabilizing; ddG > 1 kcal/mol is meaningfully destabilizing.

Multi-Mutation Effect Prediction

Problem: Protein engineering often requires multiple simultaneous mutations. The effects of individual mutations are not simply additive -- they can be synergistic (more stabilizing together) or antagonistic (canceling each other out).

How SPURS helps: The predict action with multiple mutations uses the SPURSMulti model to predict the combined ddG, along with per-mutation contributions. This captures non-additive effects that would be missed by summing individual ddG predictions.

Biological meaning: The combined ddG reflects the total stability impact of all mutations together. Per-mutation contributions show how each mutation contributes to the total, revealing potential epistatic interactions.

Variant Sequence Comparison

Problem: When comparing a wild-type protein to an engineered variant, manually identifying all mutations and predicting their combined effect is tedious.

How SPURS helps: The predict action with variant_sequence automatically identifies all differences between wild-type and variant sequences, calculates mutations, and predicts the combined ddG.

Biological meaning: This enables rapid comparison of any two sequences that differ by one or more point mutations, quantifying the expected stability difference in kcal/mol.

Applied Use Cases

Published use cases for SPURS and related stability prediction models:

  • Therapeutic protein stabilization: Identifying stabilizing mutations to improve shelf life and manufacturability
  • Enzyme engineering: Maintaining stability while introducing functional mutations for industrial biocatalysis
  • Protein library design: Filtering mutation libraries to exclude destabilizing variants before experimental screening
  • Disease variant interpretation: Assessing whether missense mutations are likely to destabilize protein structure

Anticipated (not yet published) use cases:

  • Integration with sequence design tools (ProteinMPNN, RFDiffusion) for stability-guided design
  • Multi-round engineering with iterative stability optimization

Complementary Models

  • ESM2 (this catalog): SPURS uses ESM2-650M embeddings internally for sequence features. ESM2's log_prob action provides an orthogonal (evolutionary) signal for mutation impact.
  • Chai-1 (this catalog): Structure prediction model that generates the 3D structures SPURS needs as input.

Alternative Models

Alternative Advantage Over SPURS Disadvantage vs SPURS
ESM-1v / ESM2 log-prob No structure needed, faster Less accurate for structural mutations
RaSP Fast DMS generation Different model architecture
FoldX Physics-based, interpretable Slower, requires energy minimization
Rosetta ddG Gold standard for structure-based ddG Very slow (hours per mutation)
GEMME MSA-based, captures epistasis Requires MSA, no structural context

When to choose SPURS: Use SPURS when you have a 3D structure and need fast, accurate ddG predictions with multi-mutation support and full DMS matrix capability.

When to choose alternatives: Use ESM2 log_prob for quick sequence-based scoring without structure; use FoldX/Rosetta for high-accuracy physics-based predictions when speed is not critical.

Biological Background

Protein stability refers to the thermodynamic balance between the folded (native) and unfolded states of a protein. The free energy of folding (delta-G) is typically -5 to -15 kcal/mol for natural proteins -- a narrow margin that can be disrupted by single mutations.

ddG (delta-delta-G): The change in folding free energy caused by a mutation. It is defined as:

ddG = delta-G(mutant) - delta-G(wild-type)
  • ddG < 0: Mutation stabilizes the protein (mutant folds more favorably)
  • ddG > 0: Mutation destabilizes the protein (mutant is less stable)
  • |ddG| < 1 kcal/mol: Generally considered neutral
  • ddG > 2 kcal/mol: Likely significantly destabilizing

Deep mutational scanning (DMS): An experimental technique where every possible single-residue substitution is tested simultaneously. SPURS computationally generates the equivalent DMS matrix (L positions x 20 amino acids) in seconds.

Epistasis: The phenomenon where the effect of one mutation depends on the presence of other mutations. The SPURSMulti model captures pairwise epistatic effects that would be missed by simply summing individual ddG values.

Key terminology: - Saturation mutagenesis: Testing all 20 amino acids at every position in a protein - ddG matrix: An L x 20 matrix where each entry is the predicted ddG for substituting position i with amino acid j - Stabilizing mutation: A mutation with ddG < 0 (increases folding stability) - Destabilizing mutation: A mutation with ddG > 0 (decreases folding stability) - Additive model: Assumes combined ddG = sum of individual ddGs (often inaccurate) - Non-additive / epistatic: Combined effect differs from sum of individual effects


Sources & license

License: MIT (text)

Papers

  • Generalizable and scalable protein stability prediction with rewired protein generative models — Nature Communications, 2025 · DOI

Source repositories