engin-protein
One calibrated engine, three faces of the protein design cycle. Plans 2, 5, and 9 from the venture shortlist are not three companies — they are the same GP + Expected-Improvement + conformal-interval loop pointed at a fitness landscape instead of fermentation knobs.
The wedge
Protein campaigns share the shape the rest of the engin suite serves: few measurements, expensive assays, irreversible commitments. A model that is 5% more accurate doesn't change what you order next. A model that says "82% chance this variant clears your threshold, here's the batch that most reduces your uncertainty, and here's what's driving it" does.
| Face | Plan | Question it answers |
|---|---|---|
evaluate |
2 | Which of these designs are actually worth ordering? |
lown |
5 | I have 40 assay points. What do I test next? |
planner |
9 | Run my whole campaign — batches, transfer across projects |
Built as one package because they share a featurizer, an engine, and an uncertainty vocabulary. Splitting them would mean maintaining three copies of the same calibration story.
Use it
from engin_protein import Campaign, LowNCopilot, make_landscape
landscape = make_landscape(length=20, epistasis=0.5, seed=0)
campaign = landscape.sample_campaign(n=40, seed=1)
copilot = LowNCopilot().fit(campaign)
batch = copilot.recommend(landscape.library(200, seed=2), k=8) # what to order next
Every prediction carries an interval or a probability. There are no naked point estimates in the public API — that's a suite-wide rule, not a stylistic preference.
Honest status: M0
This package is at M0: everything runs on a synthetic fitness landscape, not real assay data.
The landscape is an additive + pairwise-epistatic model with a tunable epistasis knob, which is
enough to prove the loops work and to show each face beating its baseline. It is not evidence
about real proteins.
Two claims specifically that M0 cannot support, and which the plan's kill criteria turn on:
evaluatebeating pLDDT/ipTM. The baseline here is a simulated confidence signal, built to correlate with foldability but only weakly with function — which is what the literature reports about the real thing. Beating it on a landscape constructed that way tests the plumbing, not the hypothesis. The real test needs held-out wet data (M1).lownbeating single-round design. M0 shows it on a landscape whose epistasis we chose. Real campaigns get to pick their own.
Read the numbers as "the loop is wired correctly and calibrated," nothing more.
Kill criteria (from the shortlist, verbatim in spirit)
- If function-aware ranking can't beat pLDDT/ipTM on held-out wet data, the
evaluatevalue prop fails. - If low-N can't beat single-round on <100 points, reposition.
- Cradle owns the funded low-N lane.
lownwins only on the genuinely-low-N regime plus price. - BayBE owns generic Bayesian optimization, open source.
plannerdifferentiates on biology-specific priors or it doesn't differentiate.
Featurization and the light path
Default is one-hot + physicochemical descriptors — no downloads, no PyTorch, runs anywhere. That keeps the suite's light-default-path rule (ADR 0002) intact.
For real work you want PLM embeddings (ESM-class) or structure-derived features. Rather than pulling
that dependency in, PrecomputedFeaturizer accepts an embedding matrix you computed however you
like. The engine never learns which featurizer produced its inputs.
Milestones
- M0 (here) — synthetic landscape with tunable epistasis; all three faces beat their baselines, calibrated coverage asserted in tests.
- M1 — real ProteinGym / public DMS sets, PINDER, Adaptyv open competition results. Report wet-correlation where public wet data exists. This is where the kill criteria actually get tested.
License
Apache-2.0.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file engin_protein-0.1.1.tar.gz.
File metadata
- Download URL: engin_protein-0.1.1.tar.gz
- Upload date:
- Size: 33.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
315635d027af61f069377b146c8a53cdedb0471bf4e4e6f70727bc723a8b549a
|
|
| MD5 |
320ff2eddc45c4d85d3605e381794a55
|
|
| BLAKE2b-256 |
18eea2a504cf0538e4af18529382a9c7bb93e92afc08922b0dbc766656549472
|
Provenance
The following attestation bundles were made for engin_protein-0.1.1.tar.gz:
Publisher:
release.yml on enginbio/engin-suite
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
engin_protein-0.1.1.tar.gz -
Subject digest:
315635d027af61f069377b146c8a53cdedb0471bf4e4e6f70727bc723a8b549a - Sigstore transparency entry: 2559222365
- Sigstore integration time:
-
Permalink:
enginbio/engin-suite@87173621d8d0fee3e09073ff2f07622e61efde39 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/enginbio
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@87173621d8d0fee3e09073ff2f07622e61efde39 -
Trigger Event:
push
-
Statement type:
File details
Details for the file engin_protein-0.1.1-py3-none-any.whl.
File metadata
- Download URL: engin_protein-0.1.1-py3-none-any.whl
- Upload date:
- Size: 26.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e0d95cde5a5919fcf43a649e0c13b96204918a86187b55b858db9b430b1ad171
|
|
| MD5 |
c70608cf40756d68b4eaaf07e987bd21
|
|
| BLAKE2b-256 |
3ce4849dd888912b792f030e8d57769d5d95d4fec964492ea7f84b3c21885252
|
Provenance
The following attestation bundles were made for engin_protein-0.1.1-py3-none-any.whl:
Publisher:
release.yml on enginbio/engin-suite
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
engin_protein-0.1.1-py3-none-any.whl -
Subject digest:
e0d95cde5a5919fcf43a649e0c13b96204918a86187b55b858db9b430b1ad171 - Sigstore transparency entry: 2559223478
- Sigstore integration time:
-
Permalink:
enginbio/engin-suite@87173621d8d0fee3e09073ff2f07622e61efde39 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/enginbio
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@87173621d8d0fee3e09073ff2f07622e61efde39 -
Trigger Event:
push
-
Statement type: