Difference between revisions of "Team:Bordeaux/Software"

 
(11 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
<html>
 
<html>
  
<script src="http://savandara.besse.emi.u-bordeaux.fr/Wiki/jquery-1.12.3.min.js"></script>
+
    <script src="http://savandara.besse.emi.u-bordeaux.fr/Wiki/jquery-1.12.3.min.js"></script>
<script src="http://savandara.besse.emi.u-bordeaux.fr/Wiki/alphabet.js"></script>
+
    <script src="http://savandara.besse.emi.u-bordeaux.fr/Wiki/alphabet.js"></script>
  
 
     <section class="title_toc">
 
     <section class="title_toc">
  
 
         <div class="content_wrapper">
 
         <div class="content_wrapper">
  <canvas id="myCanvas"></canvas>
+
          <canvas id="myCanvas"></canvas>
 
             <script src="http://savandara.besse.emi.u-bordeaux.fr/Wiki/bubbles.js"></script>
 
             <script src="http://savandara.besse.emi.u-bordeaux.fr/Wiki/bubbles.js"></script>
  
  <script>
+
          <script>
  
    var myName = "Software";
+
            var myName = "Software";
  
    var red = [0, 100, 63];
+
            var red = [0, 100, 63];
    var orange = [40, 100, 60];
+
            var orange = [40, 100, 60];
    var green = [75, 100, 40];
+
            var green = [75, 100, 40];
    var mint_green = [139, 44, 42];
+
            var mint_green = [139, 44, 42];
    var bioo_blue = [201, 79, 70];
+
            var bioo_blue = [201, 79, 70];
    var foo_blue = [196,71,35];
+
            var foo_blue = [196,71,35];
    var blue = [196, 77, 55];
+
            var blue = [196, 77, 55];
    var purple = [280, 50, 60];
+
            var purple = [280, 50, 60];
  
    var letterColors = [bioo_blue,mint_green,foo_blue];
+
            var letterColors = [bioo_blue,mint_green,foo_blue];
  
    drawName(myName, letterColors);
+
            drawName(myName, letterColors);
  
    bubbleShape = 'circle';
+
            bubbleShape = 'circle';
  
    bounceBubbles();
+
            bounceBubbles();
  
  </script>
+
          </script>
  
 
         </div>
 
         </div>
Line 52: Line 52:
  
 
             <h3>Overview</h3>  
 
             <h3>Overview</h3>  
             <p>As iGEMers we are responsible of using <b>safe practices</b> 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 <b>software</b> that can allow users to <b>simulate the growth of transformed bacteria</b> 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.</b>
+
             <p>As iGEMers we have the responsibility to use <b>safe practices</b> during our lab work in order to reduce the risks linked to harmful chemicals or organisms. These risks are often linked to the bacteria used almost all of the time to engineer bio-bricks. The release of such bacteria in the environment is a risk that can currently be prevented by using suicide genes and other methods. The iGEM team of Bordeaux thought of an alternative method to help tackle this problem. This is the <b>simulation of the growth of transformed bacteria in the laboratory</b>. In fact our objective has been to create a <b>software</b> that can allow users to simulate the growth of transformed bacteria on a certain area of a solid surface for a given set of parameters.</b>
 
             <p> </p>
 
             <p> </p>
  
Line 58: Line 58:
 
             <h3>The simulation</h3>
 
             <h3>The simulation</h3>
  
             <p>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.</p>
+
             <p>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 representing a solid surface. Each square corresponds to a 1µm² area and can contain one bacterial cell directly in contact with the surface or piled up on another bacterium. 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.</p>
             <p>To simulate the growth of bacteria we used two different approaches that are explaind in the section <a href="https://2016.igem.org/Team:Bordeaux/Model">model</a>. In this section we will concentrate on the parameters that the user can define and how that can change the result they obtain. </p>
+
             <p>To simulate the growth of bacteria we used two different approaches that are explained in the section <a href="https://2016.igem.org/Team:Bordeaux/Model">model</a>. In this section we will concentrate on the use of the software. </p>
 +
 
 +
            <h3>The installation</h3>
 +
            <p>You can find the source code of our software on github at <a href="https://github.com/igemsoftware2016/iGEM-Bordeaux-modeling">https://github.com/igemsoftware2016/iGEM-Bordeaux-modeling.</a> 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 <i>make</i> so you can run the application with the executable <i>interface</i>. You can also run the simulation directly with the executable <i>run</i> by passing the necessary parameters as arguments. </p>
 +
 
  
 
             <h3>The user interface</h3>
 
             <h3>The user interface</h3>
             <p>We opted for a simple user interface (figure 1) in <b>gtkmm</b> 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.</p>
+
             <p>We opted for a user interface (figure 1) written with <b>gtkmm</b> since it's a multi-platform library and that we used C++ as programming language.</p>
 +
            <center>
 
             <figure>
 
             <figure>
 
             <img style="  
 
             <img style="  
 
                 margin-left: auto;  
 
                 margin-left: auto;  
 
                 margin-right: auto;  
 
                 margin-right: auto;  
                 width:60%;
+
                 width:40%;
                 height:auto;"  
+
                 height:40%;"  
 
                 src="https://static.igem.org/mediawiki/2016/2/29/T--Bordeaux--user_interface.png"  
 
                 src="https://static.igem.org/mediawiki/2016/2/29/T--Bordeaux--user_interface.png"  
 
                 title="user interface">  
 
                 title="user interface">  
                 <figcaption>The interface where users can define parameters</figcaption>
+
                 <figcaption><b>Figure 1: A caption of the user interface with the different parameters</b></figcaption>
 
             </figure>
 
             </figure>
 +
</center>
  
 
             <p>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.
 
             <p>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.
 
             <ul>
 
             <ul>
             <li>The simulation time is the real life time that will be simulated</li>
+
             <li>The <b>simulation time</b> is the time that will be simulated.</li>
             <li>The simulation step is the interval of time at which the system will be updated. It can be changed if users find it necessary to add more precision or make the simulation faster. </li>
+
             <li>The <b>simulation step</b> is the interval of time at which the system will be updated. It can be changed if users find it necessary to add more precision or make the simulation faster. </li>
             <li>The initial number of bacteria is the total number of transformed (donors) and not transformed (recipient) bacteria.</li>
+
             <li>The <b>initial number of bacteria</b> is the total number of transformed (donors) and not transformed (recipient) bacteria.</li>
             <li>The percentage of donor bacteria is the number of bacteria possessing a plasmid and can conjugate with other bacteria.</li>  
+
             <li>The <b>percentage of donor bacteria</b> is the number of bacteria that possess a plasmid and can conjugate with other bacteria.</li>  
             <li>The height and length of the grid (the simulation environment) are the number of squares that occupy the grid's height and length. By default it is 1000x1000 but in case of a very large number of bacteria it can be extented.</li>
+
             <li>The <b>height</b> and <b>length</b> of the grid (the simulation environment) are the number of squares that occupy the grid's height and length. By default it is 1000x1000 but for very large bacteria numbers it has to be extended.</li>
             <li>The conjugation rate is the probability by which a donor will give a copy of its plasmid to a bacterium close to it (in the distance of one square</li>
+
             <li>The <b>conjugation rate</b> is the probability by which a donor will give a copy of its plasmid to a bacterium close to it (in the distance of one square).</li>
             <li>The segregation loss is the probability that a donor cell will not pass its plasmid to its daughter cell during division</li>
+
             <li>The <b>segregation loss</b> is the probability that a donor cell will not pass its plasmid to its daughter cell during division.</li>
             <li>The plasmid cost id the probability of death of a transformed bacterium because of the absence of selection pressure. By default it's 0 but it could be bigger in case, for example, of a bacterium with an antibiotic-resistance plasmid in an antibiotic-free environment.</li>
+
             <li>The <b>plasmid cost</b> is the probability of death of a transformed bacterium because of the absence of selection pressure. This parameter could be useful to simulate bacteria with antibiotic-resistance plasmids in an antibiotic-free environment.</li>
 
             </ul>
 
             </ul>
 
             </p>
 
             </p>
 
+
            <p>After the launch of the simulation the user has to wait some seconds or minutes for the simulation to run. The result is 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. </p>
 
+
            <center>
 +
            <figure>
 +
            <img style="
 +
                margin-left: auto;
 +
                margin-right: auto;
 +
                width:40%;
 +
                height:40%;"
 +
                src= "https://static.igem.org/mediawiki/2016/d/d4/Indisim_sim_10e4_init.png"
 +
                title= "Exemple of a plot obtained">
 +
                <figcaption><b>Figure 2: Example of a plot obtained after a simulation</b></figcaption>
 +
            </figure>
 +
</center>
  
 
             </div>
 
             </div>

Latest revision as of 00:56, 20 October 2016

Sleep with EpiC elegans

Overview

As iGEMers we have the responsibility to use safe practices during our lab work in order to reduce the risks linked to harmful chemicals or organisms. These risks are often linked to the bacteria used almost all of the time to engineer bio-bricks. The release of such bacteria in the environment is a risk that can currently be prevented by using suicide genes and other methods. The iGEM team of Bordeaux thought of an alternative method to help tackle this problem. This is the simulation of the growth of transformed bacteria in the laboratory. In fact our objective has been to create a software that can allow users to simulate the growth of transformed bacteria on a certain area of a solid surface for a given set of parameters.

The simulation

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 representing a solid surface. Each square corresponds to a 1µm² area and can contain one bacterial cell directly in contact with the surface or piled up on another bacterium. 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 explained in the section model. In this section we will concentrate on the use of the software.

The installation

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.

The user interface

We opted for a user interface (figure 1) written with gtkmm since it's a multi-platform library and that we used C++ as programming language.

Figure 1: A caption of the user interface with the different parameters

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.

  • The simulation time is the time that will be simulated.
  • The simulation step is the interval of time at which the system will be updated. It can be changed if users find it necessary to add more precision or make the simulation faster.
  • The initial number of bacteria is the total number of transformed (donors) and not transformed (recipient) bacteria.
  • The percentage of donor bacteria is the number of bacteria that possess a plasmid and can conjugate with other bacteria.
  • The height and length of the grid (the simulation environment) are the number of squares that occupy the grid's height and length. By default it is 1000x1000 but for very large bacteria numbers it has to be extended.
  • The conjugation rate is the probability by which a donor will give a copy of its plasmid to a bacterium close to it (in the distance of one square).
  • The segregation loss is the probability that a donor cell will not pass its plasmid to its daughter cell during division.
  • The plasmid cost is the probability of death of a transformed bacterium because of the absence of selection pressure. This parameter could be useful to simulate bacteria with antibiotic-resistance plasmids in an antibiotic-free environment.

After the launch of the simulation the user has to wait some seconds or minutes for the simulation to run. The result is 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.

Figure 2: Example of a plot obtained after a simulation