Team:BU Wellesley Software/Puppetshow
From 2011.igem.org
Revision as of 15:22, 12 September 2011 by Swapnilbhatia (Talk | contribs)
Puppeteer Overview
Lab protocols often require careful and precise execution of many individual steps to achieve the desired result. Slight inaccuracies and miscalculations can lead to invalid conclusions. We understand this crucial need to develop a less error prone workflow that will allow us to execute complicated and repetitive lab protocols in a more systematic and infallible matter. Our solution to this problem is Puppeteer, a high-level protocol specifying language that will allow users to construct protocols using our library of Common Human Robot Instruction Set (CHRIS). Using this language, users will be able to create protocols and save them into a Protocol Repository that we have created. This will allow synthetic biologists to share their work among themselves, therefore promoting collaboration within the synthetic biology community.To aid the creation of new protocols using Puppeteer, we have also created a GUI front-end for our language called PuppetShow. Within PuppetShow, users can create protocols in the editor panel and execute the protocol they just wrote with the click of a button. Given that the user’s computer is hooked up to a compatible robot, resource allocation of liquids and plates will happen automatically and a report will be generated containing a resource report, an output report, instructions for the deck setup, and a pipette verification report. For now, we have the software bridge written for the Evoware 150 API and support all major robot commands through this bridge. So far, we have created Restriction Digest and Ligation protocol using PuppetShow and successfully verified their execution on our robot.
Using this tool we have created, we aim to improve accuracy and save time. A protocol only needs to be written once and can be run repeatedly with the click of a button. Using PuppetShow, synthetic biologists can create and run protocols without worrying about any low level details or error.
Our solution comprises a five-layer stack as illustrated in the figure on the right. Using the Clotho platform, we developed two applications for specifying and executing biological protocols. The Assembly Planner is the end-point of an end-to-end design workflow that produces an assembly plan for synthetic biological devices, with each assembly step annotated with the name of a biological protocol. Each such protocol itself may be fully specified using another Clotho application called PuppetShow, which provides an environment for writing, testing, debugging, and executing biological protocols. The protocols are written in a new python-based high-level language called Puppeteer. The Language layer comprises the Puppeteer interpreter and linker. A protocol specified in Puppeteer may contain Puppeteer instructions as well as references to previously created Puppeteer programs available in a library. The Language layer expands and translates a Puppeteer protocol to a sequence of low-level commands expressed in a Common Human Robot Instruction Set (CHRIS). CHRIS provides a standardized instruction set that high level biological protocol languages like Puppeteer may assume to be supported by any robot. Any high-level language may produce CHRIS programs and any robot vendor may support a superset of CHRIS: this decouples robot hardware details from biological protocol and specification details and supports our goal of portability and protocol library reuse. The Hardware Layer---the external control and I/O interface of a robot---is wrapped under a Hardware Abstraction Layer (HAL). Vendor-provided software for programming the robot may be proprietary and is used to control the robot. An interface to it is provided by a software bridge, which maps protocols expressed in CHRIS to sequences of native robot instructions. The Resource Management layer maintains resource state information and provides a standardizable high-level interface for initializing, requesting, naming, aggregating, and accessing resources to the Language layer, analogous to a ``system call'' suite. This interface supports our goal of removing the minutiae of resource management from the protocol specification language.