It is a cellular automata model, in fact. As for how they grow, its a simple stochastic process where once a cell overgrows another, it has a probability of success. If it succeeds, then one more cell location is added to the colony object, and the cell in the environment is set to the value of the colony. As to what constitutes a split, it is if two groups of cells which were once contiguous are no longer contiguous. E.g. I have two "species" in the following 3x3 environment
time=0
a a a
b a b
a a a
time=1
a a a
b b b
a a a
So, at t0, we have three colonies in the system, at t1, we have four, as the initial colony of species a is now two colonies due to the central link being overgrown by species 2, and there remain two colonies of b. Of note is that this is the similar to the following situation:
time=0
a a a
a b a
a a a
time=1
a a a
b b b
a a a
where the colony b in the center has expanded in two directions and severed both links. At t1 we have three colonies. As a sidenote as to why this is important to the simulation, colonies have aggregate properties depending on their size. Were I to not keep track of individual colonies, later dispersed cells would get the benefits of a larger colony size, even if they are no longer connected.
UPDATE: Note that in situation 1, there are three colonies at t0 and four at t1, not two at t0 as I had previously stated. The two cells labeled b are seperate colonies and do not merge at t1. Sorry for the confusion. | [reply] [d/l] [select] |
Hi readbeard,
Please explain, how do you calculate the number of colonies in a given environment.
You mentioned
in the first 'situtation':
- Time t0 => 2 colonies
- Time t1 => 3 colonies
This is only possible if you don't count single cell as one colony. Please verify that it is the truth.
From my perspective, in the first situation at t0 and t1, both have 3 colonies.
- Time t0, we have 7 => 'a' , 1 => 'b' and 1 => 'b'
- Time t1, we have 3 => 'a', 3 => 'b' and 3 => 'a'
If my perspective is correct, then your problems is that how many 2-D groups you can find for given 'environment' at different timings. There may be well known algorithms for this. What I recall is the TileFall perl Program from PerlPress. See how the initial groups are calculated and you may find your algorithm from there.
I also suggest to research Graphical algorithm index and to get some valuable hints.
artist
| [reply] |
Yup - my bad - There are 3 colonies at t0 and 4 at t1, as both b's are seperate colonies. I may later thing about implementing colony merges, but that's a rather tricky business, as Grosberg et al. have shown that colony merging is largely determined by genetics (so, I may keep track of "original colony" later on) but that's a level of complexity that won't be necessary for what I want to do with this model. I'll take a look at the links, though - thanks!
| [reply] |
Do you also need to deal with this and more complex variations of the same?
time=n
c a a
b c a
b b c
| [reply] [d/l] |
Yes. Part of the point of the simulation is to see how it behaves at different levels of diversity...I'm thinking of running it with up to 20 species or so.
| [reply] |