A System One Approach to General Protein Evolution

Pev overview: protein and target context in, one forward pass scoring every single edit in parallel, calibrated choice and improvement probabilities out

Pev proposes the next single-residue edit to a protein and says how likely it is to help. One forward pass over the parent scores every legal substitution and STOP in parallel, so a decision costs one backbone pass rather than one per candidate -- over 800ร— the throughput of a per-mutant encoder at 1,000 candidates. Trained once on measured outcomes from many families, applied zero-shot to families it has never seen: peptides, small folded domains and antibodies, under binding or stability.

Two heads, two questions. p_choice[a] is the probability that edit a wins the panel it was offered; p_improve[a] that it improves the measured outcome. Both are calibrated post-hoc on held-out families.

Results

The discovery screen: one measured reference protein, every measured single substitution of it, ten wells, on families reserved before training.

method Hit rate @10 โ†‘ Enrichment @10 โ†‘ AUROC โ†‘ Wells to first hit โ†“
Perfect ranking 0.949 18.94ร— 1.000 1.0
Pev 0.424 7.19ร— 0.729 6.1
ESM-2 zero-shot 0.231 2.80ร— 0.545 48.3
Random 0.128 1.02ร— 0.497 27.8

By class: 10.96ร— on domains, 1.32ร— on peptides, 2.16ร— on antibodies. Calibration halves the calibration error (ECE 0.182 โ†’ 0.096 on p_improve) and is rank-preserving, so every number holds with and without it.

Files

file
checkpoints/pev/weights.pt 6 MB. Heads, conditioning and LoRA slots only.
checkpoints/pev/metadata.json architecture, backbone fingerprint, and what the two probabilities are probabilities of.
checkpoints/pev/calibration.json the post-hoc calibrator.

The frozen ESM-2 650M backbone is not stored here: it is 400ร— the size of what was trained and reconstructible by name, so it is fetched from facebook/esm2_t33_650M_UR50D on first use and checked against the fingerprint in metadata.json -- a different cached copy is reported rather than silently changing every number.

Usage

Pev is not a transformers model and does not load with AutoModel. Install the pev package from the project repository, then point it at this checkpoint:

import json
from huggingface_hub import snapshot_download
from pev.loading import config_from_metadata, load_checkpoint
from pev.model import DecisionModel

path = f"{snapshot_download('Yibooooo/Pev')}/checkpoints/pev"
model = DecisionModel(config_from_metadata(json.load(open(f"{path}/metadata.json"))))
if model.cfg.lora_last_n_layers:
    model.encoder.enable_lora()
load_checkpoint(path, model)   # warns if the backbone differs
model.eval()

The project repository also carries the discovery screen and the pinned 45-panel benchmark, so the table above can be reproduced end to end against a verified copy of the evaluation split.

Intended use

For ranking candidate single substitutions in a protein-engineering campaign, as a prior when no assay data on the target exists yet -- exactly when a family-specific model cannot be fitted. Out of scope, and wrong if you use it this way:

  • Insertions, deletions, multi-residue designs. Single substitutions only.
  • Objectives it was not trained on. Binding and stability only; not expression, solubility, immunogenicity or developability.
  • A substitute for assays. The headline means "2 of every 5 wells return a beneficial edit rather than 1 in 8", not that the top-ranked edit works.
  • Antibodies, with care. The weakest class: five test families, and the untrained backbone still ranks slightly better on enrichment.
  • Anything clinical or safety-critical.

Data

Trained on public mutational-scanning and binding datasets -- AlphaSeq, MegaScale, FireProtDB, ProteinGym, SKEMPI 2.0, SLiM DMS, AbAgym, FLAb -- split by family, a family held out for one property held out for every property. The evaluation split is 214,378 variants across 165 held-out families, carrying no training families; the training families and the training code are not distributed. Please cite the upstream datasets alongside this work.

Citation

@misc{wen2026pev,
  title={A System One Approach to General Protein Evolution},
  author={Pev Team},
  year={2026},
  howpublished={\url{https://yibow.me/pev}},
  url={https://yibow.me/pev},
}
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for Yibooooo/Pev

Finetuned
(38)
this model