Wednesday, 21st April 2010
Adding ribosomes to my cell simulation
This is a description of some work I did on an older version of my cell simulation.
So far, the main adaptation that cells in my simulations have evolved has been an increase in of gene copy number. Such adaptations are unsurprising given that it's the only way cells can alter the relative amounts of each protein. In my final simulation I want to allow cells to alter gene expression using transcription factors to control rates of transcription (and thus translation).
As a first step towards a more sophisticated gene expression system, I created a new protein type: ribosome. The quantity of protein synthesised in each unit of time is now proportional to the number of ribosomes in the cell (rather than being fixed at an arbitrary constant). As with my heterocyst simulation, the amount of protein is reduced during each unit of time by a constant rate of degradation.
There is still no way for cells to differentially express proteins, but I need make gene expression a protein-catalysed event before I can regulate it. The ribosomes protein type differs from the previous ribosome type because it is not reversible. It works by converting metabolite JG (which can be considered to represent amino acids) into a metabolite called new_protein. new_protein thus represents the amount of amino acids converted into protein. At the end of each time unit, new_protein is converted into each of the cell's proteins. The amount of each protein produced is inversely proportional to its length so longer proteins are produced slower and require more amino acids to synthesis than shorter proteins. I hope this will provide a selection pressure to keep protein length to a minimum.
I ran the new program to test the changes and to see what evolved. The most obvious change was the speed of the program. While the previous incarnation went through nearly 2000 generations in four days, the updated protein barely managed 14 generations. I'm going to have to spend some timing working out why its taking so long and whether there are any inefficiencies I can remove. Otherwise I might have to switch to Java or even C++, which I have recently started learning.
Looking at the cells that evolved, it looks like the reason for the slow speed is that the cells have evolved huge genomes.