Line 254: | Line 254: | ||
<p>For nutrient uptake, a bacterium can take nutrients from the square where it is located. Two factors are then taken into consideration : the nutrients capability to reach the cell surface and the cell's ability to metabolize those nutrients.</p> | <p>For nutrient uptake, a bacterium can take nutrients from the square where it is located. Two factors are then taken into consideration : the nutrients capability to reach the cell surface and the cell's ability to metabolize those nutrients.</p> | ||
− | <p>Nutrient are consumed in accordance to the following formula : U<SUB>(max)</SUB> = Z(cm<SUP>& | + | <p>Nutrient are consumed in accordance to the following formula : U<SUB>(max)</SUB> = Z(cm<SUP>α</SUP>)</p> |
Revision as of 12:54, 17 October 2016
Modelisation is often used to modelize a behaviour of an organism inside a specific project. All iGEM teams have to consider seriously their project impact concerning safety issues. When we work with modified organisms, the question of confinement is essential to prevent their spreading out of the lab. Even if each team thinks about the best tool to answer this question, our team has decided to think about the worst situations. To answer this question, we decided to create a computational simulation model in order to see :
The presentation of our work will be done in different sections. First, we are going to explain our approach in choosing a simulation model and our reasons for our choices. In the next section, we will describe how we have created our model and explain its initialization. After this, we will explain our mathematical choices to modelize bacterial growth and plasmid loss. Finally, we will make an assessment of our model, explain how we have validated it and give our perspectives for this project. In informatics, a multi-agent system aims to represent intelligent agents which interact with one another and with a specific environment. In our case, our agents are bacteria, dispersed randomly on a grid (our environment).
The bacteria are submitted to successive actions such as growth or division, and have specific attributes such as a an individual cell mass, or more importantly a plasmid.
Our model aims to provide friendly users with information about bacterial growth. If you wish to evaluate a risk of contamination, or to experiment with parameters to characterise bacterial plasmid transfer or plasmid maintenance, you are welcome to test it out! As stated before, our modelling choice was to implement a multi-agent systems. Multi-agent modelling are frequently used to model biological phenomena. It stands out against continuous mathematical modelling, which is often used for predictions at a population level.
Our main concern in this project was the rapidity of the simulation. Indeed, bacteria can quickly develop, and our processor may have to face a horde of ever-growing agents. Hence, we chose to implement our simulation in C++. Initially, an empty lattice is created, containing n number of squares. This number is determined by the height and length of the lattice provided by the user, and set by default at 1000x1000. A square is identified by its id in the lattice and can contain bacteria. If there is more than one bacterium, the bacteria are piled up in the square, with of course a limit to the piling,also set by the user. This model can de divided into two main parts : the growth of the bacterial population and the transmission and maintenance of plasmids in the population. This model follows for each bacterium the steps showed in figure 1.
Donachie's model is based on the dependence of the median cell's volume on growth rate during exponential growth. Each cell volume depends on the cell's growth rate, which itself depends on substrate uptake and metabolism. Hence, after substrate uptake and metabolism, the growth rate of each bacterium is updated, and its new volume is calculated. If the bacterium volume falls below a minimum volume, the bacterium dies and the agent is deleted from the lattice. Contrary to the precedent model which is based on the cell volume dependence to its growth rate, this model takes into account biomass growth dependence. Bacterial growth, as modelled by Indisim, can be divided into different steps :
For nutrient uptake, a bacterium can take nutrients from the square where it is located. Two factors are then taken into consideration : the nutrients capability to reach the cell surface and the cell's ability to metabolize those nutrients. Nutrient are consumed in accordance to the following formula : U(max) = Z(cmα) Bacterial plasmids are extra-chromosomal genetic elements that can be transferred from one bacterium to another. We chose with this model to implement the horizontal and vertical transfer of genes between these bacteria. The vertical transfer of genes is the transmission of a plasmid from a cell to its daughter cell after division. During the division, it is assumed that the daughter bacterium can fail to receive the plasmid with a given probability : this phenomenon is known as segregative loss. As the probability is directly taken from data from the scientific press (« Modelling the spatial dynamics of plasmid transfer and persistence »), and as its source doesn't take into account the copy number of plasmid, we also chose not to. Horizontal gene transfer, also known as conjugation is the direct transfer of genetic material between two bacterium located near each other. Conjugation happens for each plasmid-bearing cell at each time-step. If there is a plasmid free cell in a neighbour square, conjugation can occurs at a rate also taken from press to fit experimental data. It is also considered as an instantaneous event, thus being a simplification of the real process. We also consider plasmid cost for a bacterium. Indeed, when there is no antibiotic in the environment, plasmid-free bacteria have an advantage over plasmid-bearing ones.
What happens when a bacterial population escapes from our test tubes ?
1. Multi-agent modelling
The definition
Why have we chosen this model?
Multi-agent modelling offers different advantages :
2. Overview
Our programming choices
As for the interface, we chose a much simpler implementation in Python 2.7. Our program's dependencies are the library gtkm for C++ and for Python Matplotlib. Creating the agents and environment
The bacterial agents are then created, and randomly set in different squares. Each bacterial cell possesses certain characteristics such as a mass, a volume, an identifier of the square the cell is in etc. 3. How does it work?
Bacterial growth
For the growth of our bacterium agents, we tried two different implementations. The first one is an adaptation of bacterial growth implemented for the first time in Bacsim [1] and based on Donachie and Robison model for cell division. The second is adapted from the INDISIM methodology [2] for bacterial growth simulation.Bacterial growth based on Donachie's model
If the bacterial volume becomes superior to the volume at division, the bacterium divides in its "division neighbourhood" » but only if at least one square is unoccupied. For example, in figure 2 you can see the possible squares where the central bacterial cell can give a daughter cell.
Bacterial growth based on Indisim methodology
Plasmid loss
References