As iGEMers we are responsible of using safe practices during our lab work in order to reduce the risks linked to harmful substances 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 and 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 defined by the user. The user can input an initial number of bacteria that would be released on a surface, the percentage that are transformed, parameters linked to the are 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 be transformed or not 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, 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 . In this section we will concentrate on the parameters that the user can define and how that can change the result they obtain. Overview
The simulation
The user interface
We opted for a simple user interface (figure 1) in gtkmm as the language we used for the simulation is C++. It was one of our principal goals to make an interface so that non-programmers could run our application without problems.
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.