Next: , Up: Overview of Monod



1.3.1 The Design Stack

The Monod computational approach is somewhat more complex than, say, a Turing machine. However, it is fairly easy to describe as the top of a hierarchy of structures. We introduce in the next section this hierarchy. Happily, the implementation of the Monod Cell model has been made to closely mirror this abstract design stack. Hence the uses of the hierarchy are twofold: to reduce the explanatory load on the reader and to provide a good framework for the implementation.

The stack can be seen in the following image, where each layer uses and is more complex than the one below it.

The Monod Design Stack

The bottom three layers are useful and fairly generic design patterns. Above them, the Cytoplasm model contains the complete computational model, properly speaking. The Monod Cell adds some practical gewgaws. Finally, the Monod Culture is a framework for applying evolutionary algorithms to Monod Cells. We present a quick overview of the various layers. More details for each layer may be found in dedicated sections in further chapters.

The Hive
The Hive is a design pattern that we use to abstract away the computational difficulty of maintaining a multitude of independent execution threads. A Hive contains residents, which are simply programs wrapped in an object. The Hive can be seen as a fairly simple scheduler for the residents, which can be assimilated to threads. Many considerations have led to the adoption of the Hive design pattern rather than using the underlying threading model of the Operating System (OS). The Hive is described in The Hive Design Pattern.
The Swarm
The Swarm is another design pattern built on top of the Hive and introduces formalized interactions between the residents. Residents of a swarm expose certain projections, and these projections are tagged with markers. Markers have variable affinities for one another, and may trigger bindings between the projections that are propagated to the control flow of resident and may affect its behavior. Bound projections may also be released, and markers altered.

Binding is the most fundamental principle driving Monod. It is introduced very early, and further refined in the higher layers of the design stack.

Details are given in The Swarm Design Pattern.

The Incubator
An Incubator is a Swarm where the residents are of two kinds: ligands and processing units. Ligands are akin to simple passive text strings. Processing units can be arbitrarily complex, but their projections operate in a fashion similar to text strings and regular expressions, binding with each other and with ligands. Furthermore, processing units (procunits, for short) may alter the ligands by changing the string, cutting them up, binding them, etc.

An analogy can be made by imagining a soup of Turing machines, with the machines binding, releasing and reassembling the tapes floating in the soup according to their individual programs and to their binding markers. Another analogy is with biological cells, identifying processing units with proteins and ligands with DNA and/or RNA strings.

The Incubator is described in more details in The Incubator Design Pattern, along with this analogy.

The Cytoplasm
The Cytoplasm model builds on the Incubator design pattern by introducing several concepts inspired by cell microbiology. It is not called a design pattern anymore because of its lack of generality. The most significant difference introduced in the cytoplasm is that processing units — now called proteins — are made out of a finite set of domains, each of which performs a specific action, such as calculating a logical function or altering a ligand based on a logical input. Domains must be assembled, lego-like, to create valid, fully-functional proteins, and different proteins may be creating by different combinations of the same domains.

Other innovations also appear in the Cytoplasm. For instance:

The Cytoplasm incorporates all the details of the computational model of Monod. It is described in detail in The Cytoplasm.

The Monod Cell
The Monod Cell complements the Cytoplasm with a nucleus to coordinate protein synthesis and introduce a compilation step from a genetic representation of the proteins to the proteins themselves (akin to the transcription/translation process that takes place in the eukaryotic cell); and a membrane to coordinate ligand transport to and from outside the cell. Many hooks are also added to be able to control and monitor processing within the cell. The Monod Cell is essentially a Cytoplasm equipped with a practical “interface” that can be used by an appropriately design harness to run experiments. It is described in The Monod Cell.
The Monod Culture
The Monod Culture is the culmination of the project. One of the original inspirations for Monod is to provide a convenient breeding ground for programs. A Monod Culture is a glorified harness that employs evolutionary algorithms to alter the genomes of Monod Cells according to various programmable policies and, hopefully, find something, er, better. The Monod Culture framework is described in Monod Cultures.

Much of the interesting work envisioned consists in running experiments with different Monod Cultures. Some of these results are described in Results and Future Projects, and alluded to in Overview of the Results below.