nf-labrobotics

A Nextflow plugin · prototype

Follow a plate from Nextflow to the robot, and back.

nf-labrobotics puts robotic wet-lab steps in Nextflow pipelines, with no change to the language. A wet step never runs twice, an aborted run stops a robot safely, and every plate's provenance lands in Nextflow lineage. Press Next, or click any station, to send plate Q01 down the line.

What's real on this page
  • Computed here, as nf-labrobotics computes it: plate Q01's map (from examples/qpcr/plate_map.csv), its idempotency key (SHA-256, as labctl builds it) and each well's Ct (as the simulated qPCR instrument gives it).
  • Simulated, like nf-labrobotics's own demos: the robots. nf-labrobotics runs against PyLabRobot's simulated machines; no robot is needed.
  • Illustrative: timings (a qPCR run takes about 1.5 hours, here a few seconds), task hashes, job IDs and the other plates in the pool.
A conveyor loop: Nextflow on the left, the lab on the right, the HTTP contract between them. Fourteen stations; the plate moves between them.
0 / 14 ← → stations · Space play · R reset

Run it yourself

Everything above runs on your machine against simulated robots. You need Java 17, uv and Nextflow 26.10.0 or later.

git clone https://github.com/vagkaratzas/nf-labrobotics && cd nf-labrobotics
make install          # builds the plugin into ~/.nextflow/plugins
cd dashboard && uv run uvicorn nf_lab_dashboard.app:main --factory --port 8080

Open http://127.0.0.1:8080 and pick a demo: qpcr runs this page's pipeline, 1000 samples over ten simulated robots, while a narrator plays the person at the bench. plate_transfer → E-stop shows the abort, the safe stop and a -resume that runs only the stopped plate again.

Writing pipelines

Wet steps are ordinary processes. Take a wet module, give it a plate record, send process_wet to the labrobotics executor.

Wet modules →

Running a lab

Start the device adapter, list your robots in pools, set your limits for protocol parameters, keep the deck page open at the bench.

Device adapter →

Making robots

If PyLabRobot drives it, nothing to add. Otherwise write a binding, or your own adapter for openapi.json, and prove it with the conformance kit.

For robot makers →