module Incubator: sig end
Implementation of the Incubator design pattern, which coordinates
the interactions of ligands and processing units. The Incubator
implementation relies heavily on the Swarm implementation - it's the
next level up in the Design Stack of Monod - and any performance gain
made to the Swarm will carry through to the Incubator directly.
Currently, the Incubator uses the (very inefficient)
SerializedSwarm
implementation.
Processing units have two kinds of projections: ligand binding
projections, which bind to ligands, and structural binding
projections, which bind to other processing units.
See also testing/test_incubator.ml
for simple examples of how to use
this module.
In the Monod project, this module is used to define elements of the
next layer in the Design Stack, the Cytoplasm - see the FIXME:
Cytoplasm module (which doesn't exist yet.)
type splitstays =
Used when sending a split order to identify which part of the
split ligand - the left or the right part - stays attached to the
originating projection.
type splitorder = splitstays * int
The first part is described above. The integer part is used to
identify the index within the submarker of the ligand at which the
split is to be done: the split is done just to the left of the
referenced base.
type joinorder =
FIXME: ...
exception Not_a_ligand
Raised by the method extract_ligand
below.
module Procunit: sig end
Contains the definitions for the processing units appearing an an
Incubator.
type resident
The opaque type of a resident of an Incubator object, which refers
to either a ligand or a processing unit. Must be used as parameter of
certain methods.
class t : object end
The signature of Incubator objects.