As iGEMers we are responsible of using safe practices during our lab work in order to reduce the risks linked to harmful chemicals or organisms. A big number of iGEM teams use engineered E. coli or other bacteria in their projects and their release in the environment is a risk that should be prevented. However, there are always limits to prevention. The use of a tool to predict the risk of an eventual release of bacteria in the laboratory could help reinforce the biosafety in an alternative way. This is why we created a software that can allow users to simulate the growth of transformed bacteria for a given set of parameters. The software takes as input an initial number of bacteria that would be released on a surface, the percentage of them that are transformed, the area of the simulated surface and parameters linked to plasmid loss and plasmid transfer.
Our tool runs an agent-based simulation. The agents are bacteria which can possess or not a plasmid and the environment is a grid of squares that represent each 1µm² of a solid surface. Each square can contain one bacterial cell diractly in contact with the surface or piled up on another bacterium in contact with the surface. The piling up is limited by the user. A certain concentration of an energy source for the bacteria can be present on the grid. Time is concrete so bacteria repeat a schedule of actions at each time step. These actions are consuming nutrients, metabolizing them, and dividing or dying if certain conditions are met. To simulate the growth of bacteria we used two different approaches that are explaind in the section model. In this section we will concentrate on the use of the software. You can find the source code of our software on github at https://github.com/igemsoftware2016/iGEM-Bordeaux-modeling. The dependencies are the g++ compiler, the C++ boost library, the gtkmm library and and the matplotlib library. You need to compile the sources (of one of the two versions) with the command make so you can run the application with the executable interface. You can also run the simulation directly with the executable run by passing the necessary parameters as arguments. We opted for a simple user interface (figure 1) written with gtkmm since the language we used for the simulation is C++. The parameters the user can define are linked to experimental conditions but also to the mechanics of the simulation itself. These parameters are explained below.
After the launch of the simulation the user has to wait some seconds or minutes for the simulation to run. After that they get a plot of the evolution of the number of bacteria in the time (one exemple is figure 2). This plot can also be found in the directory of the executable as a png and the data it's based on can be found in a csv file containing the time step, the total number of bacteria and the total number of donor bacteria at each time step. Overview
The simulation
The installation
The user interface