Klavins MPP 2011
gro: A specification language for multi-celled behaviors
- Eric Klavins, University of Washington,
The process by which a single cell develops into a multi-celled organism is a complicated process. A combination of internal logic, control of growth and division, and cell-cell communication must coordinate the behaviors of the growing organism so that it differentiates correctly in time and space, in spite of environmental perturbations, and intrinsic or extrinsic noise. Although several formalisms have been defined to describe development – to produce CGI plants using L-systems for example – the relationship between high level programs and the possible biochemical implementation of those programs in micro-organisms is tenuous. Said differently, it is unknown whether the basic mechanisms available to the synthetic biologist (e.g. simple synthetic gene networks or the ability to co-opt quorum sensing) are sufficient to implement the pattern formation algorithms defined at higher levels in computer science. There is, thus, a potential for a rich interplay between algorithm development and mechanism design in the context of increasingly realistic physical simulations of synthetic-biological multi-celled systems. Here, we introduce a formal specification and programming language, called gro, that allows the programmer to write distributed algorithms at a variety of different levels of abstraction. For example, the programmer may specify that a cell changes from one state to another, of that cell state is defined at the level of a multi-stable gene network with all of the low-copy number noise that would accompany it. The programs can be simulated in an environment that models the basic geometry of micro-colony growth and division, as one might see under a microscope, and also models the production, degradation, and diffusion of signaling molecules. In this talk, we illustrate gro with a variety of examples; focus on the example of symmetry-breaking in particular; and discuss a notion abstraction for gro programs using Wasserstein pseudometrics. The result is a tool that may someday allow the molecular programmer to specify a developmental process at a high level, and refine it, step-by-step, into a low level description of how an implementation would work, and finally to formally compare the specification to an actual experimental implementation.