Pourfecto.jl

Pourfecto.jl is a julia package for generating automated liquid-handling workflows by turning experimental goals into executable liquid-handling protocols. It separates protocol design into two stages: planning, which determines how available reagents should be combined to produce the desired target solutions, and scheduling, which decides how those transfers should be carried out on specific liquid-handling instruments. Pourfecto accounts for reagent availability, stock quantities, target compositions, labware constraints, instrument capabilities, deck space, and allowable transfer volumes to produce optimized workflows.

Pourfecto builds directly on CHESSCore's reagent, stock, and labware/location model — see the CHESS documentation for the underlying data model this package plans and schedules over.

Prerequisite reading

Pourfecto's manual assumes familiarity with CHESSCore's Locations, Movement & Occupancy, Reagents & Chemicals, and Stocks chapters. The ledger/database chapters (Committing & Uploading, The Ledger, Caching & Repair, and so on) aren't needed to use Pourfecto.

Installation

Pourfecto is a package of the CHESS repository and is installed with it. Follow the CHESS installation instructions, then, in the clone, start Julia with the Pourfecto environment:

julia --project=Pourfecto

and load the package:

using Pourfecto
Note

By default, Pourfecto's planning and scheduling algorithms use Gurobi (licenses are free for academic users as of the time of writing), but a Gurobi license isn't required — any JuMP-compatible optimizer can be used instead via the optimizer keyword. See Choosing a solver for the free alternatives Pourfecto is tested against and their tradeoffs.