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"
}
]
}'
Request — SpursPredictRequest
| 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 ' |
|
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"
}
Response — SpursPredictResponse
| 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
Related Models¶
Complementary Models¶
- ESM2 (this catalog): SPURS uses ESM2-650M embeddings internally for sequence features. ESM2's
log_probaction 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
- github: https://github.com/luo-group/SPURS
- huggingface: https://huggingface.co/cyclization9/SPURS