engin-host
Host / chassis selection — stage [4] of the engin-suite strain-to-scale funnel. Given a target molecule's capability profile, recommend the microbial host with an explainable rationale, an honest confidence band, and hard-constraint flags — so teams don't spend 18 months discovering E. coli was the wrong chassis.
Why
Host selection is a crucial design parameter still chosen empirically ("just use E. coli" or tribal knowledge). No published tool scores candidate chassis against a production requirement with calibrated uncertainty — searched 2026-08-13 and written up, with the near-misses, in docs/design/host-selection.md. The honest competitor is not other software: it is building the constructs in six hosts and measuring. Circuit failures are frequently host-interaction failures rather than failures of the circuit itself — the contextual causes are catalogued in Cardinale & Arkin (2012).
Corrected 2026-08-13 by the D23 pass (#91), then searched under #107. This read
"with no standard commercial tool — genuine whitespace": an absence claim about a
market, never searched, on the day the equivalent claim about the data convention
proved flatly wrong. The search found no published tool, so the absence holds — but
"commercial" was dropped, because a literature and package search cannot settle what
sits inside a proprietary platform. It also read "Most circuit failures are
host-interaction failures"; the mechanism is well supported, the proportion is not.
What it does
A multi-criteria decision engine over a curated host-capability knowledge base:
- scores candidate hosts for a target profile (weighted suitability),
- shows why (per-capability contributions),
- flags hard requirements (glycosylation, secretion, GRAS, scale) and demotes infeasible hosts below every feasible one regardless of raw score,
- attaches a confidence band that widens honestly where the KB is thin.
Uncertainty is first-class and shared with the rest of the suite: P(suitability ≥ threshold) is computed with engin_core's primitive.
Quickstart
from engin_host import default_kb, HostQuery, score, render_memo
kb = default_kb()
q = HostQuery(
weights=dict(glyco=1.0, secretion=0.9, protein=1.0, titer=0.6, scaleup=0.7),
hard=dict(glyco=0.6), # a hard glycosylation requirement
)
ranked = score(kb, q)
print(ranked[0].host, ranked[0].score, "±", round(ranked[0].band90, 2))
print(render_memo("my target", ranked))
On two contrasting queries the engine picks the right hosts — CHO for a secreted human glycoprotein, S. cerevisiae for a food-grade small molecule — correctly demoting higher-scoring-but-infeasible chassis via hard constraints. Full demo:
python examples/run_demo.py # writes memos + score charts to outputs/
Status & roadmap
M0 (scoring + uncertainty + flags) works on an illustrative KB. Next: replace
the illustrative values with literature-grounded, cited capability data (M1);
calibrate the confidence band against retrospective host-choice cases, reusing
engin_core's conformal machinery (M2); backtest and sign design partners (M3).
Install
pip install -e "packages/engin-host[dev]" # from an engin-suite checkout
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_host-0.1.1.tar.gz.
File metadata
- Download URL: engin_host-0.1.1.tar.gz
- Upload date:
- Size: 19.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f2c070394871fec3414ca226c5d026f2bee917ba8047fdfca1613eecbd393a2
|
|
| MD5 |
dd251a471178bb27ad1b83ea980a6cd2
|
|
| BLAKE2b-256 |
72b85dc58daa53643cd92ce20d6770492d5e731fa7078a04c539065bad64338f
|
Provenance
The following attestation bundles were made for engin_host-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_host-0.1.1.tar.gz -
Subject digest:
1f2c070394871fec3414ca226c5d026f2bee917ba8047fdfca1613eecbd393a2 - Sigstore transparency entry: 2559222776
- 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_host-0.1.1-py3-none-any.whl.
File metadata
- Download URL: engin_host-0.1.1-py3-none-any.whl
- Upload date:
- Size: 15.5 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 |
c80447f7278939cac526786957d23f252f53f38041f60c68bd937122eca7d698
|
|
| MD5 |
88af851be6e0862a55bda13e2ba9a6d5
|
|
| BLAKE2b-256 |
823d7152236178a26ca839a9efcc8c3d0a86c33881f224f9f51158b7eacbea78
|
Provenance
The following attestation bundles were made for engin_host-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_host-0.1.1-py3-none-any.whl -
Subject digest:
c80447f7278939cac526786957d23f252f53f38041f60c68bd937122eca7d698 - Sigstore transparency entry: 2559223811
- 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: