Lagan PathaniaLab Automation Architect
Case study · Laboratory automation

HTS Orchestrator

Design an example screen, then simulate a 72 h run with an operator in the loop.

Simulate a runDesign a screen in the live appView the code
−70%
hands-on time per plate, 5.6 h to 1.7 h (modelled)
16 min
compound-to-cells wait, against 98 min by hand
14
coded fault types, each with a recovery rule
1 spec
drives checks, worklists, protocols and data

A 72 h screen leaves no room for manual hand-offs

Chained timing windows

Cells must follow the compound within 60 min. By hand the compound step alone takes about 98 min in my model.

One layout, many files

The plate map, worklist and three protocols must agree on every well.

Faults with no one watching

Shortages, a dropped plate or a wrong barcode become silent deviations in the data.

One spec drives the whole run

Example assay: 384-well spheroid plate, 20 compounds × 5 doses × 3 replicates, 84 controls, CellTiter-Glo 3D readout.

1

Spec

One YAML file: compounds, doses, volumes, timing.

2

Validate

Coded checks on DMSO, volumes, tips, reservoirs and time windows.

3

Build

Plate map, iDOT worklist and three Flex protocols, simulator-checked.

4

Execute

Timed steps, logged plate custody, coded fault recovery.

5

Incubate

72 h ± 2 h. State is saved; the process can exit.

6

Package

Data, run record and AnIML, with a SHA-256 manifest that is checked on write.

DAY 0 DAY 3 DiluteFlex DoseiDOT MediaFlex CellsFlex Spincentrifuge Incubator: 72 h, plus or minus 2 hstate saved to disk; the program may switch off ReagentFlex Shake5 min Lyse30 min Readreader Window 1: iDOT end to last cells, 16.4 of 60 min Window 2: cells kept 12.2 of 45 min Window 3: reagent lag 14.1 of 15 min Not to scale. Window 3 is above 80% of its limit, so the check raises a warning that travels with the data.
One run. Three timing windows are predicted before the run and enforced during it.
A machine reportsa fault (coded) Safe toretry? yes Retry by itselflimited number of tries Worked? yes Carryon no: retries used up no Is an operatoravailable? yes Operator decidesretry · continue · abort Name and decisionwritten to the record no Pause and save statereason stored, exit code 2 Later: an operator resumeswith the saved state and a decision Separate guard: a timing windowwould be brokene.g. a delay that makes cells too old Ask an operator before morewells are committed Continue with a recordeddeviation, or abort the run
Fault handling. Transient faults are retried within limits. Everything else goes to a named operator, or the run pauses with its state saved. Every plate move is written to a hash-chained log, and a lost plate stays flagged until an operator confirms where it is.
Instruments in the workflow

Orchestrator (sequence, record, fault decisions) · iDOT (30 nL per well, 20 nL minimum) · Opentrons Flex (dilutions, media, cells, reagent) · robot arm (logged plate transfers) · incubator and centrifuge · plate reader (luminescence, barcode check).

Dose-response design

Every compound well receives the same 30 nL. The gradient comes from five stock concentrations made by 1:4 serial dilution on the prep plate, one source well per point.

PointStock (µM)iDOT volume (nL)Final in well (µM)DMSO (%)
113,33330100.075
23,333302.50.075
3833300.6250.075
4208300.1560.075
552.1300.03910.075
Negative control (solvent)DMSO only3000.075
Positive control (kill)13,33330100.075

Volume per well = final concentration × assay volume ÷ stock. It must stay between the 20 nL iDOT minimum and the DMSO ceiling. It varies by point only when the stock factor differs from the final factor (specs/example_variable_volume.yaml).

Tested against fifteen ways a run can go wrong

239
automated tests, all passing
15 / 15
failure scenarios match their expected outcome
23 / 23
OQ cases, against 20 requirements and 18 risks
0.73 Z′
simulated screen, S/B 33.7, 14 active compounds
All 15 failure scenarios and their outcomes
ScenarioWhat happensOutcomeCodes in the record

Hands-on time falls by about 70%

MeasureFully by handWith the system (simulated run)
Hands-on time per plate5.6 h1.7 h
Compound to cells (window 60 min)98 min, window missed16.4 min predicted
Reagent lag (window 15 min)11.2 min14.1 min predicted
Fit for automation86%, rated strong (nine-factor score)
Payback at 4 plates/weekFlex and iDOT: 1.9 years. Full system with arm: 3.6 years.
Recommendation: buy the Flex and iDOT first and add the robot arm later. The arm and its instrument interfaces add about €92,000 of equipment and save about 14 min of carrying per plate.
Definitions and sensitivity

Timings and costs are model estimates; 42 inputs are placeholders until measured. Compound to cells is the longest wait from the end of iDOT dosing to the cells landing in any well. Reagent lag is the first-to-last-well delay. The Flex is slower than an 8-channel pipette by hand here, but both sit inside the 15 min window. Payback depends on throughput: for Flex and iDOT it is 1.9 years at 4 plates a week, 4.2 years at 2 and 11.5 years at 1.

From signal to a complete data package

1ReadBarcode must match the dosed plate.
2NormalisePercent of control: 100% no effect, 0% fully dead.
3Check qualityZ′ and signal-to-background for the plate.
4FitIC50 and Hill slope per compound; active needs 30% effect at the top dose.
5Flag and packageDeviations travel with each well; SHA-256 manifest.

The orchestrator stops at the data package. Hit selection, confirmation runs and hand-over to a LIMS or ELN come next in a real lab and are not built here.

What was measured

Every well: compound, dose, raw and normalised signal, timing and flags.

wells.csvreader_export.csv

What it means

A dose-response fit and a call (active or not) for each compound.

analysis/curve_fits.csv

What happened

Run record, deviations and a hash-chained custody log of every plate.

datapackage.jsonaudit/custody_log.json

What was used

The exact spec, plate map, iDOT worklist and the three Flex protocols.

inputs/

Ready to share

Standard AnIML export, validated against the core schema when the schema file is installed (the browser app skips it).

animl/experiment.animl

Warnings and deviations are written into the flags column of every affected well.

What this is, and is not

Simulated

No real instrument has been connected.

Estimates

Timings and costs are placeholders until measured.

Not GxP

The validation pack shows the method, not a sign-off.

Portable

Spec, checks, custody, recovery, timing and package carry over. Only the instrument layer changes.