How do we physically put together a strand of DNA sequences given to us by Algorithm Manager? Normally, this step in the workflow would require tedious amounts of hand written instructions to tell the liquid handling robot exactly where, when, and how much to pipet to create this strand of DNA. However, with the help of Puppeteer, we aim to simplify this process and allow the user to perform lab protocols with as little as a single line of code.
The Puppeteer stack
The figure below shows the sample history for a sample from the Puppeteer Sample Repository. The nodes in orange are reagents (e.g., water, buffer, enzymes) and the nodes in red are DNA samples. The square nodes in blue are protocol operations (e.g., digestion or ligation). Arcs are from samples or reagents to protocols, and from protocols to samples only. A protocol thus consumes samples and reagents and produces new samples.
The figure below shows the sample history of a sample ABBC, constructed from primitive samples A, B, and C. This type of visualization can be used to trace back the history of a sample and investigate what went into making it. This is useful for debugging. Apart from visualization, sample history is also useful from an algorithmic point of view: an algorithm could now check the history of a sample to decide whether it is usable in a reaction. This is analogous to type-checking in programming languages; only this is stronger.
The figure below shows the above sample history, but with the reagents deleted from the visualization.
(Coming soon ...)