Odola Labs
I created a workbench where you can name a protein and specify an objective in simple terms, and the agent will then manage the entire campaign.
Core trick
Fits a Gaussian process over ESM-2 embeddings to assay results each round, selects the next batch by acquisition score, and exports a cloud-lab order.
Description
I created a workbench where you can name a protein and specify an objective in simple terms, and the agent will then manage the entire campaign. After determining whether your target has a measurable fitness landscape, it conducts a propose-measure-feedback cycle against it. In every round, it folds actual assay data into a Gaussian-process surrogate over ESM-2 embeddings and makes decisions about whether to investigate unknown combinations or take advantage of existing hits.
The workbench finishes by converting this shortlist into an order that is ready to be copied and sent to a cloud lab like Ginkgo or Adaptyv directly through the tool. As a demo, my agent achieves a best measured fitness of 4.662 in 96 measurements against 149,361 genotypes on GB1's four-site landscape, where each fitness value is derived from the Wu 2016 deep mutational scan as a real prior measurement. It also avoids a reciprocal-sign-epistasis trap that stops greedy hill-climbing cold.
The workbench agent takes the judgment seat a scientist normally occupies, so it picks which scorers fit the target, weighs their disagreement, and decides what the shortlist should prioritize instead of just returning raw numbers or ranked lists. Every candidate arrives carrying a rationale that can be interrogated. Using this tool, scientists can spend more time making scientific and design decisions, rather than piecing together various tools and squinting at scores.
For live runs, I added a key to the app so that our GPU usage was contained (odola@27)
README excerpt
--- title: Variant-Screening Workbench emoji: 🧬 colorFrom: indigo colorTo: blue sdk: docker app_port: 7860 pinned: false --- # Agentic Variant-Screening Workbench A terminal-native workbench that takes a protein and a plain-language goal, triages what kind of campaign it can run, drives an iterative loop that proposes and ranks variants, and ends at a finished design you take to a cloud lab. When a registered combinatorial DMS landscape exists for the protein (GB1), the loop returns real assayed fitness. When no measured landscape exists, it runs a predict-only loop that ranks variants by computable in silico proxies, clearly labeled predicted rather than measured. Framing rule: proposal and modeling run in silico. Measured values are real prior measurements from a published deep mutational scan, standing in for a live bench round; predicted values are in silico estimates and are labeled as such. Nothing here implies benchtop validation that did not happen, and the pipeline never places a lab order on its own. ## Status The following run end to end today: - **Data layer** (`data/`): the GB1 four-site landscape loader and the on-disk PLM score/embedding cache. - **Tool layer** (`tools/`): the `measure(variant)` oracle and the `score_plm(variant)` ESM-2 masked-marginal scorer. - **Surrogate** (`surrogate/`): the Gaussian-process regressor over ESM-2 embeddings with a ridge fallback, and `surrogate_update(measured_batch)`. - **Agent** (`agent/`): the real propose-me