PSoup - Evolution on your desk


PSoup (Primordial Soup)

PSoup was designed to be a student laboratory for experimentation with evolutionary processes.  Biological systems are the archtypical complex adaptive systems.  Students can watch the development, in minutes, of ideal phenotypes associated with ecological niches, and examine the relationship between genotypes, phenotypes, and population dynamics.  A wide variety of scenarios are available in six levels of increasing complexity, and tinker wizards enable the creation of new scenarios or alteration of all existing scenarios.  There are features available for the demonstration of convergent and divergent evolution, radiation, and speciation.

The movement (search patterns) of these blind bugs is controlled by nine 'Palmiter Genes' G0-G8, (named after Dr Michael Palmiter) found on the first chromosome (C1).  Each gene codes an angle of turn to the left or right, and a strength (genotype) which is converted into a probability of selection on a given turn.  All genes started at value 1.  After five or six generations, those bugs with mutations strengthening the F (forward), FR (front right), FL (front left) and L (Left) genes have out-competed the others, as seen in the average gene profile top left.  However, we can see in the histograms of gene value by gene type, there is nevertheless much diversity in the gene pools of all genes except gene #8, the "stand still and do nothing" gene, which I have, in this run, disallowed from mutation or from expression.  Bugs with a dominant B (backwards) gene are called jitterbugs, and jitterbug back and forth until they die young.  Bugs with such genes are selected out of the population very quickly.  While the average phenotype (see the "clock face" above) gives you a great visual sumarization, the histograms provide a more detailed look into the allele distribution in the population.

To download PSoup, click here (4.2 Mb).  This includes a native Windows XP help system. The help files associated with PSoup are extensive but are designed to function in Windows XP or earlier.  If you wish to make the help files operable in Windows Vista, Windows 7, or Windows 8 environments, visit this site and install WinHlp32.exe on your system.  To go to the download site, click here (  Or, alternatively, the help files have been converted to an MS Word booklet which is included in the download with the software, or can be downloaded separately here.  

Alternatively, it can be downloaded from the OpenABM website:

PSoup from OpenABM

Installation: There is no installation program.  The software must be installed manually.  Simply place the zip file into a directory of your choice, unzip it in place, and you are ready to go.  I suggest that you create the directory structure OrrerySW\PSoup in your "My Documents" directory, and put it there.  Copy the exe file and paste a short cut on the desk top, if you wish.

Startup: There are multiple scenarios available through the menu bar.  The toolbar has buttons for Go and Stop, but also 1 function, 1 tick, and SloMo, so you can run any scenario at your own pace.  

Other things to know: You can display the genetic profile of each bug (takes a lot of computer time) or the population average profile (much faster).  The Status panel (middle) and Notes panel (bottom) display a variety of things explained in the help files, but they include family tree diagrams and energy distribution graphs.  You can collect data into "comma-separated value" (CSV) files and analyse the data using MS Excel.  There are six levels of scenario, each with more complicated features added.  If you want to understand what is happening at each level, you need to progress through the scenarios from level to level.  There is information available in a panel called "About This Scenario" for each scenario.  There are tests to check your level of understanding at each level before you go to the next.  The tests ask questions about jargon and features introduced in the scenarios at each level.  To switch the software into tutorial mode, use the menu bar to go to "Options\Control Panel" and select "Student Mode".  Then completion of the level test is necessary before progression to the next level.  But, if you like to just dive in, go for it.  

If you have questions, I would love to receive email.  Just put PSoup in the subject line.

A Cool Scenario.

This scenario was produced by (1) using menu command "Options/Control Panel" and setting level 6; (2) leaving (or selecting) the level 1 scenario "The Basics"; and (3) clicking on "Seed" on the toolbar and choosing a PRNG seed of 1; then (4) running the scenario for 50 simulated hours, or approximately 169 generations.  By setting level 6, as indicated in step 1 above, you turn on the full slate of all features in the application.  In particular, all four genetic chromosomes are under evolutionary pressure.  The "Basics" scenario has all genes at default start values.  For different seeds, different dominant phenotypes emerge,  Now, I think that's cool!


I like this scenario because you can see the results of evolutionary selection acting on many dimensions in the phenospace (Cartesian space or phase space of all phenotypes).  

The panel in the top left is the C3/C4 genetic profile in which there is a visible display of the phenotype of the third and fourth chromosomes.  The third chromosome (C3) is called the fight chromosome, and the fourth (C4) is called the flight chromosome.  The numbers are relative strengths of the phenotypic characters of nine "capabilities" that may be activated and evolved.  These include five senses, two modes of advanced reproduction, and two higher functions (the ability to herd, and the ability to think).  In all cases, fight genes cause movement towards a target, and flight genes cause movement away from a target.  A target might be a patch of algae or another bug.  The ability to think looks forward 3 cells when planning a movement path, although movement is always one cell at a time.  All others simply influence an attempted movement in that direction.

There are two aspects to the activation of each of the 18 abilities: existence and performance.  Each of these two chromosomes may contain up to 26 genes, one for each letter of the alphabet, for a total of 52 possible "capability genes".  If the bugs are diploid (i.e reproduce sexually), then there are a total of 104 such genes in each bug.  A mutation to one of these genes may cause it to appear or disappear, or to grow in strength, or decline in strength.  The number of activated C3/C4 genes is the "complexity" of the bug.  A phenotypic character is NOT activated until the chromosome has three of the four or five genes needed to spell the name of the character.  For example, a bug cannot see unless it has three out of five of the S, I, G, H and T genes.  This is analogous to real-world evolution of sight that involves evolution of sensitivity to light, ability to focus, and ability to interpret images.  Without all three, sight cannot happen.  But, once a suitable constellation of genes is present, those bugs with more effective sight have an advantage over those with less effective sight.  This is achieved through relative strength.  In a "Basics" scenario all bugs start with no capability genes.  So the arms race is on from the start.  Which bug evolves the ability to see first, and which evolves the most effective sight first?

So, what do we see happened?  We have a population of 29 bugs that exhibit all 18 phenotypic characters.  We know this because the numbers are all non-zero.  All 18 evolved independently, but only three have gained high strength.  The flight characters have not gained strength.  Only smell, touch and ovule have gained strength, ovule gaining the most of all.  Smell and touch (claws and teeth) indicate predatory and/or parasitic activity.  Ovule indicates sexual reproduction over fission or simple recombination.

I have to say, I think it is wonderfully interesting that the character that evolves the most quickly of all is the one that controls sexual reproduction.  Here are some excerpts from page 202 of the PSoup Help System.


SMELL is one of the nine capabilities which can be enabled via the C3 and C4 genes. When SMELL is enabled in C3, a bug can smell algae or bugs. It is able to smell only those within the scan area of the bug. The SMELL capability has a fight component (C3) and a flight component (C4). The fight component enables detection of other bugs by SMELL. It also enables the consumption of foul-tasting bugs, but only if the bug is carnivorous due to another capability (SIGHT, HEAR, TOUCH). The flight component enables the avoidance of detection by SMELL by other bugs. The flight component also enables a foul smell which causes attackers to spit out 80% of the bug, and to eventually leave the quivering remains alone, and alive. 


TOUCH is one of the nine capabilities which can be enabled via the C3 and C4 genes. When TOUCH is enabled, a bug can detect by touch algae, other bugs, empty spaces, edges (if any). It is able to detect this only in neighbouring cells. The TOUCH capability has a fight component (C3) and a flight component (C4). The fight component enables weapons of attack such as claws and teeth. The flight component enables means of defense such as spines and shells. These are implemented as aggressive or defensive premiums during melee. This is an important capability. 


OVULE is one of the nine capabilities which can be enabled via the C3 and C4 genes. When OVULE is enabled in C3, a bug can detect and mate with suitable other bugs. An OVULE-enabled bug can sense a suitable mate, even though other senses are not enabled. Suitable mates must be of the same species (i.e. similar complexity and feeding habits), sexually enabled (i.e. OVULE enabled) and physically mature (old enough). 

At the bottom of figure #001 is a set of C3 population profiles, similar to the C4 profiles shown in figure #002 below.  Each histogram shows the spread of strength values for fight characters.  Note that the distributions are all right-skewed, possibly indicating some kind of entropy-related process driving the evolution.  This would be an interesting idea to research further.


This shows the population profiles for the flight characters.  It is curious that some are clearly bimodal or trimodal, while others are more evenly distributed.  At the same time, the right-skewed shape is apparent again.

All of these profiles beg the question: why are the fight genes so much more strongly selected than the flight genes?  I expected exactly the opposite.  If a predator attempts to move towards prey and misses, it lives to try again.  But if the prey tries to escape and fails, that's the end.  So, you would think that a lucky large flight gene would be more critical to continued existence, until reproduction, than a strong fight gene.  Very curious, indeed.


This is the average profile of chromosome number 1 (C1) which contains the genes that control movement of blind bugs.  You can consider the numbers in the "strength" column to be genotypic, and the numbers in the "percent" column to be phenotypic.  In the "Basics" scenario, all bugs start out as blind.  These genes all exist and are under tremendous evolutionary pressure to grow quickly in strength.  It appears that the "Forward" (F) and "Forward Right" (FR) genes had some dominance in the past.  However, Once the C3 genes become active and start to influence movement, strong C1 genes cause noise that reduces the performance of the C3 genes.  The C1 genes then come under pressure to decline in strength.  So, we see here that those C1 genes that cause movement (all but the "stand still" gene (SS)) have declining exposure to evolutionary pressures and are shrinking from sight.


We finish our walk-through of the phenotype of the average bug in generation 169 of the "Basics" scenario (with Level 6 features activated) by looking at the profile of the second chromosome (C2).  Consider each pair of bars (black and red) as a single two-bar histogram.  The black shows the initial value of the strength of the gene, and the red shows the current average value for the population.

I will not explain it all here.  But I will bring a couple of interesting things to your attention.  The death age threshold (DAT) was originally 1600 ticks, and is now 3271 ticks.  The average life span of bugs has doubled in 169 generations.  On the other hand, the reproductive age threshold (RAT) has grown from 800 ticks to 880.4 ticks.  I can understand that living longer gives a bug more opportunity to reproduce, so the maximum age is under evolutionary pressure to increase.  But wouldn't reproduction at a younger age also increase probability of reproduction.  Why has the age of sexual maturity risen?  Why hasn't it fallen?

But the other big change is in the "energy per move" (EPM) gene, and this is not a surprise.  The bugs that use less energy to perform daily functions (moving) have a survival advantage over the less efficient bugs.  EPM started at 4 and now sits at 1.747.  When the "Basics" scenario was started, the carrying capacity of the pond (I call it a "bowl") was about 16 bugs.  Now there are 29.  As the bugs become more efficient in their consumption of energy, the carrying capacity of the pond rises.

FIGURES #005 AND #006

In these two figures we see the C3/C4 genetic profile of two specific bugs that are part of the population of 29 bugs.  Alan591 has a complexity of 89, while his relative Alan618 has a complexity of 87.  Also, note that Alan591 is in the 166th generation, while Alan618 is in the 171st generation.  These are possibly distant cousins, one from a fast-reproducing branch, and one from a slow-producing branch.  We also know they are distant cousins since they have rather different phenotypes.  Note that Alan591 has developed some significant ability to be choosy about sexual partners, while Alan618 has some significant ability to see predators coming and run away.


Here we see the genetic connection between all living bugs.  Only the matrilineal connection is shown in this Family tree.  This shows the history from minute 2556 to minute 3060.  Note that the entire population comes from two mother bugs alive at minute 2556.  We see four "families" alive in this tree.  Looking at them from left to right, it seems that the second is doing well while the others are not.  This phenomenon is called radiation, in which one branch expands and displaces all others.  Three out of four will eventually to extinct.  I am not sure where, in this tree, the two Alans shown above might be found.  I suspect they are on different branches.  But they are the only two, of twenty-nine, having significant flight capability, so maybe not.

You have to ask yourself, what is driving evolution here?  50% of every generation will die of starvation, old age, or predation.  The most nasty and best defended will survive.  The other bugs in the same cohort (same concurrent population) form the principal environmental drivers.  The Red Queen Effect is in full force here.  It is a pure arms race, and the nastiest predators will win.  Sure, there is still algae being produced and eaten almost immediately with every tick.but there is not enough to go around.  The winners are able to detect both algae and bugs (SMELL), while at the same time have nasty teeth and claws (TOUCH) and high-end sexual reproduction (OVULE) to maintain and improve that edge.

A Very Similar, But Similarly Cool, Scenario:

Another favourite of mine, for similar reasons, is the Level 6 scenario called "Veni, Vidi, Voravi", which, when translated from the Latin, means "I came, I saw, I ate it!".  In this scenario, unlike in "The Basics", all bugs are given a variety of rather potent gene combinations at the start.  Some are excellent herbivores, able to out-compete the others when it comes to collecting algae.  Others are carnivores, who must chase their prey to eat.  Many have excellent ability to avoid being eaten.  The point is, rather than starting from primordial scratch and watching what evolves, it starts from a well-developed level.  In the graphics shown below, the scenario has been run to over 250 generations.  You can see some of the same effects as in the scenario shown above, but a few new ones as well.

FIGURES #001, #002 AND #003

Here are the average genetic profiles after 265 generations of bugs in the "V V V" scenario.  Note that the C1 Palmiter genes have shrunk to an imperceptible nub.  The "stand still" gene has a 95.41% probability of being selected.  (See the phenotype column in the C1 profile.)  This means the C3/C4 genes control movement towards or away from targets, unhindered by untargeted noise, nineteen times out of twenty.  Note also that the bugs are generally not reproductively mature until 4144 ticks of age.  The default and original value was 800 ticks.  So these bugs live long lives, then must reproduce quickly.  Finally, notice in the C3/C4 profile that "THINK" as a higher order capability has started to come into demand, but as a mechanism to escape predation, coming second only to "TOUCH".  This means that bugs that have a hard shell are the hardest to kill, and those that look three moves ahead before bolting for safety are the next most difficult to kill.  Finally, note that recombinant haploid DNA and diploid DNA are both common, with diploid DNA being slightly dominant.


Compare this family tree to the previous one.  In the scenario called "The Basics" contingency (i.e. which capability happened to appear first) played a major role in determining the genetic landscape of the population.  The fight and flight capability genes play off against each other in an arms race.  Once many bugs develop a strong sense of smell, other capabilities become ineffective, so there is strong path dependence in developments, it seems, and clear radiation of genotypes.  But, in the "V V V" scenario, when all bugs are endowed with capabilities at the beginning, the happenstance of which capability appears first is removed.  The dynamics of the competition becomes different.  We see, here, a thicket of very distantly related bugs (at least, along the matrilineal lines) all having some success in maintaining their genetic lines.  I count 28 genetic lines entering this graph, as opposed to the 2 seen in the previous tree.  Here we see evolution without radiation.


The software tracks the number of alleles in each generation of bugs.   The minimum number of genes in a haploid bug is 14 (8 C1 genes and 6 C2 genes).  There are a total of 134 possible genes in a diploid fully capable bug (18 C1 genes, 12 C2 genes, 52 C3 genes and 52 C4 genes.)   The total population, at the moment this chart was displayed, was 148.  It is possible to have 19,832 alleles in this population.  But there are a total of 1,055 (not shown).  On average, each allele is shared by about 19 bugs.  Interesting!  We see that the number of alleles of each type fluctuates from generation to generation, as alleles are added (via mutations) and deleted (via mutations and death prior to reproduction).   With this kind of data I can do a study of the effect of evolutionary pressure on those genes that have exposure to evolutionary pressures and those that do not.  For example, Z is non-phenotypic, as it does not appear in the spelling of any capability.  On the other hand, T appears in SIGHT, TASTE, TOUCH, and THINK, and so has a large exposure.

There is much more I could show here, but I think that is enough!  I am very proud of this program, and invite you to download it and play with it.

Last updated: 17 September 2014