Compartments in biological models can be thought of as classes in that they define the structure of an executable biological object: set of reactions and set of sub-compartments. [And a model is essentially a universal compartment with some global parameters such as the rate of cell division or the current simulation time. Like you can have a Python module without classes that still runs, you can have a model without compartments, where the reactions cannot send objects in or out of the model, and whose rate constants implicitly contain the volume of the model.] The compartment class is instantiated to a compartment object in our virtual machine (simulator, model checker, optimiser) when we specify the set of molecules contained in each compartment. The structure of the model is thus separate from its state (genotype/phenotype split?) and we can examine the model's response to any state we choose. Currently each of the models we produce is complete in that it specifies the structure of the model and the initial state.
We are using a stochastic simulation algorithm, so each simulation run returns a different possible trajectory - path through time and space - or 'evolution' of the objects in the system, namely the sequence of reactions fired, the changing quantities of molecules and size, shape and position of the compartments. For small systems we can run many simulations to obtain the most probable trajectory of the system, or a distribution of outcomes. For models of bacterial colonies (many cells/single top-level compartments) each bacteria represents a different possible trajectory of the model bacteria at a colony-level model. Colony models tend to be very large - 10,000 cells in a 100 by 100 lattice (and we want to go 100 times bigger still) - and due to there running time we can only do a few different runs of the model. Quite often the interesting behaviour takes a while to emerge and it would be nice to be able to pause the execution of the model at a certain point, say when a large number of quorum sensing signals have accumulated and just before the colony becomes quorated, clone the model at that point several times over and set each instance running again to make measurements like the time until all bacteria are quorated, or the time it takes the colony to become unquorated after a certain quenching agent has been applied (model events). For static models where compartments do not move, grow or divide into sibling compartments this is easy, we can just save the set of molecules in each compartment - the models current state - and the simulation time, and instantiate several models with that state. But when the model is dynamic the structure of the model has changed: the position of the compartments has changed for instance; it is by our previous definition a new model. We need to be able to extract that new model from the simulation... ... In object-orientated languages this is called serialization (or pickling in Python) of an object. ... The structure of the model has been changed by its state and that state is the result of an initial state. Does it make sense to create a reusable abstraction of this model? [question to audience]. Is it different to specifying that exact structure a priori?
homeostasis (maintenance) / autopoiesis (regeneration) - the components are constantly changing but the system remains the same sex - yeast a and alpha mating types how can we describe these functions, that emerge from the interaction of molecules and their containers, in terms of molecules and containers?