Coral: Python Abstractions for Genetic Design | AIChE

Coral: Python Abstractions for Genetic Design

Authors 

Bolten, N. - Presenter, University of Washington
Genetic designs are becoming increasingly complex, involving a large number of interacting genetic parts and levels of abstraction. CAD software for genetic designs is ideal for designing complex genetic systems, which often requires stringently applying numerous rules and conventions on several different levels of abstraction. Previous CAD software for genetic design has focused on the biggest pain points in managing these rules and conventions: bottom-up visual, interactive text editors make common sequence-level operations and analysis questions easily available, top-down genetic compilers manage translating high-level specifications to specific, realized genetic parts, and domain-specific tools describe and complement new design methods. However, these tools are typically orchestrated manually by the researcher, and many steps of the design process involve mental checklists, one-off changes to sequences, or applying lab-specific conventions. Typically, there is no document that fully describes the design process, posing challenges to record-keeping, reproducibility, and training. Here, we present Coral, an open-source Python library and opinionated approach for abstracting genetic design. Coral places an emphasis on fully recording the genetic design process, from the bottom up, in the form of a fully executable, researcher-authored program and design document. To support a bottom-up design approach, Coral provides a flexible object model for representing arbitrary biological sequences and implements powerful instance methods for inspecting, manipulating, and combining those sequences, as well as a series of supporting modules for common operations. In combination with native Python control structures, Coral enables nearly any design workflow to be concisely represented, saved, stored in a version control system, and widely disseminated for reuse. Furthermore, design operations can be easily abstracted into reusable classes or functions, enabling the researcher to operate at their preferred level of abstraction. We present several functioning examples of these approaches to abstraction and best practices, including laboratory-specific rules on primer design, de-novo sequence generation, structural analysis, CRISPR design, and simple grammar-based composition.