swarm-modeling
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Swarm-Modelling] lifecycle requirements


From: Scott Christley
Subject: Re: [Swarm-Modelling] lifecycle requirements
Date: Wed, 29 Nov 2006 22:12:37 -0500

This email become longer than I intended, but it might be because I've been thinking about such a model ... :-)

On Nov 29, 2006, at 8:05 PM, Russell Standish wrote:



You keep saying that. But, this is not a software engineering exercise. All I want to do is determine whether or not lifecycles are important
to ABMers.  In order to determine that, we have to talk about a
lifecycle _requirement_. There's no software engineering going on, here.

It is not something I've ever come across as a requirement, but I keep
reading this list hoping to understand why it might be important.

Glen gave a simple analogy with the life stages of a human, and his key point is the problem of having "to explicitly characterize the entire hyperspace", i.e. explicitly model all possible states. This is often call the state explosion problem, and it becomes a problem when state change is more than changing the value of a variable but implies functional change as well. If you design a model where you explicitly handle all of those states, that means you need to explicitly write code for the function of the agent for each states. What if the number of states is exponential?

Here is an example I like to use from biology. The central dogma of biology says DNA -> RNA -> Protein where the first step is transcription and the second step is translation. However, there is a complexity because in higher organisms the RNA used in translation is not a direct copy of the DNA, it first goes through a splicing (and editing) process to produce the final RNA. This might be no big deal, but another complexity is that under different circumstances, the splicing process produces different RNA. So the basic idea that a single gene (DNA) produces a single Protein is not true, there are multiple proteins produced through alternative splices. Each exon (splice unit) is either part or not part of the final RNA, so if a gene has 5 exons then you can say that there are (at most) 2^5 = 32 alternative proteins. Generally not all alternatives are actually possible, so at first this does not seem to be much of problem.

Now each Protein has a 3 dimensional structure that it folds into, so each of these alternative slices produces a different structure. In biology, a protein's function is defined by its structure but that structure is not fixed, enzymes and other molecules often change that structure, so a protein is considered to have different conformations. Say each protein, for simplicity, has two conformations, often called the active and inactive forms. Now we have 2 * 32 = 64 possible "states" for our one protein.

So what is happening most of the time in biology, one protein which is in its proper conformation binds with another protein also in its proper conformation to form some sort of complex. Now for modeling, we finally get down to implementing interaction rules, well for just two proteins like those above (5 exons, 2 conformations), the set of all possible interactions is the cross-product of the states giving 64 x 64 = 4096 potential interactions. Some may be valid, some may never occur, some be equivalent, etc.

And that is just for two proteins, the problem just gets worse when you start adding more proteins and complexes which include more than 2 proteins. Plus many of these interactions are stochastic. etc etc


Now I make it sound really bad, but there are simulations out there with protein-protein interactions, and it is not that bad. The reason is that only a very small number of those potential interactions occur in reality, and most modeling takes what is known from the biology and just puts in those specific interactions. Essentially the "hyperspace" can be explicitly modeled.


But now consider that your interest is really evolution. So what you would like is to perform artificial evolution on the DNA and observe changes at some higher level (say patterns which occur through interactions of the numerous proteins). Now you are faced with a scenario that the hyperspace is so large that you cannot code in all of the possible interactions ahead of time.

Now doing a simulation like this is borderline not possible with today's computational power, but maybe not too far off so suspend your disbelief for the moment ...

How would a lifecycle help?

Well (one of) the key problem is going to be exactly how do two unknown protein 3 dimensional structures interact. If you take the naive approach you say, okay we will model the atoms of the two structures, calculate all the forces, and make some determination on whether they bind, etc etc. But you cannot use that approach when attempting to get your higher level patterns because it is too computationally complex for a system with lots of interacting proteins.

What you want is a simple functional rule which says when protein X and Y hit --> do something. Because you can simulate many of those simple rules. What you need then is to do that naive approach once, then translate the result into a rule.

However that rule has two parts, the protein X and Y is okay but what about the do something part. What if you don't know all the possible "do somethings" ahead of time? In a really cool evolutionary model you would not, this would be new functionality that was acquired.

So the bottom line becomes to create specialized objects which implement only their specific function, in contrast to a general object which implements all possible functions. Lifecycle may not be the best descriptive word for my example but the capabilities are similar.


There is more to be said on this, especially with regards to model selection that I mentioned in an earlier email, but I will pause until somebody gets me kick-started again ;-)

cheers
Scott





reply via email to

[Prev in Thread] Current Thread [Next in Thread]