|
|
(72 intermediate revisions not shown) |
Line 3: |
Line 3: |
| <body> | | <body> |
| <div id=""page-content-wrapper""><div class="splash" id="modelingsplash"> | | <div id=""page-content-wrapper""><div class="splash" id="modelingsplash"> |
- | <div class="textinsplash" id= "modelingtextinsplash"> | + | |
- | <h1>Modeling</h1> | + | <div class="row splashyla"> |
| + | <div class="col-md-12"> |
| + | <a href="https://2014.igem.org/"><img src="https://static.igem.org/mediawiki/2014/0/09/Aalto_Helsinki_Logov_iGEM.png" class="img-responsive igem-logo"></a> |
| + | </div> |
| + | </div> |
| + | |
| + | <div class= "row splashesittely"> |
| + | <div class="col-md-3"> |
| + | </div> |
| + | <div class="col-md-6"> |
| + | <h1>Modeling</h1> |
| + | <p class="bigsplashtext"> |
| + | Before bringing all the parts together in the lab, we built our switch in the mathematical world. |
| + | </p> |
| + | </div> |
| + | <div class="col-md-3"> |
| + | </div> |
| </div> | | </div> |
| + | |
| + | <div class= "row splashala"> |
| + | <div class ="col-md-12 transp scroller"> |
| + | <a href="#Intro"> |
| + | Scroll down to read more |
| + | <img src="https://static.igem.org/mediawiki/2014/3/3e/Aalto_Helsinki_Nuoli.png" class="img-responsive center-block transp nuoli"> |
| + | </a> |
| + | </div> |
| + | </div> |
| + | |
| + | <div class="splashalavalikko"> |
| + | <a href="#Intro">Introduction</a><br> |
| + | <a href="#Math">Mathematical Model</a><br> |
| + | <a href="#Simulation">Simulation</a><br> |
| + | <a href="#Discussion">Discussion</a><br> |
| + | </div> |
| + | |
| + | <div class = "splashcopyright"> |
| + | <p class="transp"> |
| + | <a href="http://i-see-faces.deviantart.com/">Photo © Tanja Maria</a> |
| + | </p> |
| + | </div> |
| </div> | | </div> |
| + | |
| + | <!-- MathJax (LaTeX for the web) --> |
| + | <script type="text/x-mathjax-config"> |
| + | MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}}); |
| + | </script> |
| + | <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> |
| + | |
| | | |
| <script src="https://2014.igem.org/Team:Aalto-Helsinki/jquery-1.11.0.min.js?action=raw&ctype=text/js"></script> | | <script src="https://2014.igem.org/Team:Aalto-Helsinki/jquery-1.11.0.min.js?action=raw&ctype=text/js"></script> |
Line 13: |
Line 58: |
| <div class="navbar navbar-default extrabar" data-spy="affix"> | | <div class="navbar navbar-default extrabar" data-spy="affix"> |
| <nav> | | <nav> |
- | <a id="Math-submenu" class="active" href="#Math">Mathematical Model</a>
| + | <a id="Intro-submenu" class="active" href="#Intro">Introduction</a> |
| + | <a id="Math-submenu" href="#Math">Mathematical Model</a> |
| <a id="Simulation-submenu" href="#Simulation">Simulation</a> | | <a id="Simulation-submenu" href="#Simulation">Simulation</a> |
- | <a id="Accuracy-submenu" href="#Accuracy">Accuracy</a> | + | <a id="Discussion-submenu" href="#Discussion">Discussion</a> |
| </nav> | | </nav> |
| </div> | | </div> |
- | <div class="update Math"></div>
| |
| | | |
| + | <div class="update Intro"></div> |
| <article> | | <article> |
- | <div class="link" id="Math"></div> | + | <div class="link" id="Intro"></div> |
| | | |
- | <h2>Mathematical model</h2> | + | <h2 class="kakspaddingbottom">Introduction</h2> |
| | | |
- | <h3>Overview </h3> | + | <p> |
| + | To get an idea of how our gene circuit would work in an ideal situation, we explored the structure and dynamics of our system by creating a mathematical model of the reaction kinetics and a simulation that can be controlled in real time. We started working with the mathematical model without any detailed information about the system. We derived the differential equations to demonstrate how blue light and the changes in phosphorylated $YF1$ and $FixJ$ concentrations would affect the production of our three target proteins. We labeled them simply $A$, $B$ and $C$, because the system is intended to be used with any three genes encoding the proteins of choice. |
| + | </p> |
| | | |
| <p> | | <p> |
- | Here, we will discuss the dynamics and interactions of chemical species introduced in the research section. We have developed a simplified mathematical model describing our system and based on that, an interactive simulation that can be controlled in real time. Based on this, we created a simplified visualization available on our web page. With this, the intended working of our system can be easily demonstrated to any audience. | + | Using our equations we constructed a simulation showing the effects of red and blue light on our system in real time. The user can control the input of both lights to see how they affect the production of proteins $A$, $B$ and $C$. We experimented with different values for all constants and via trial-and-error iteration we arrived to a visualized simulation that can be used to demonstrate the intended function of our system. This is an idealization. Based on present and future measurement data, the parameters can be adjusted to better the dynamics of our system. |
| </p> | | </p> |
| | | |
- | <h3>Simplifications</h3> | + | </article> |
| + | <div class="update Intro"></div> |
| + | <div class="update Math"></div> |
| + | <article> |
| + | <div class="link" id="Math"></div> |
| + | |
| + | <h2>Mathematical Model</h2> |
| + | |
| + | <h3 class="kakspaddingtop">Assumptions</h3> |
| | | |
| <p> | | <p> |
- | The first model that was constructed before our lab work even begun involves many harsh simplifications. Our aim was to get a general picture of how the system could work in ideal conditions and how stable it was. | + | We assumed that the species identified in our gene circuit are the only ones that affect the overall concentrations inside the bacteria. We further assumed that binding of $CI$ to $O_R$ operator site does not impact the overall $CI$ concentration and that the amount of $CI$ bound to the $O_R$ sites was proportional to $CI$ concentration. The model is also strictly deterministic and doesn’t take any noise into account. The phosphorylation, decay, binding and production of proteins are assumed to be linear functions of concentration. We further assumed that the phosphorylation of $FixJ$ by phosphorylated $YF1$ would not involve phosphate transfer between the reacting molecules. |
| </p> | | </p> |
| | | |
| <p> | | <p> |
- | We assumed that the species identified from our gene circuit are the only ones that affect the overall concentrations in our bacterial culture. The bonding of CI to OR sites is assumed to be insignificant compared to overall concentration. The model is also strictly deterministic and doesn’t take into account any noise. The phosphorylation, decay, bonding and production of proteins are assumed to be linear functions of concentration. | + | The first model was constructed before our lab work had even begun and it contains many harsh simplifications. Our aim was to get a general picture of how the system could work in ideal conditions and how stable it was. |
| </p> | | </p> |
| | | |
- | </article>
| + | <h3>Equations for Dynamics</h3> |
- | <article>
| + | |
- | | + | |
- | <h3>Equations [to be inserted]</h3> | + | |
| | | |
| <p> | | <p> |
| Based on the assumptions made before, we arrived at following differential equations to describe the idealized dynamics of our system: | | Based on the assumptions made before, we arrived at following differential equations to describe the idealized dynamics of our system: |
| + | |
| </p> | | </p> |
| | | |
- | <div class="row"> | + | <div class="row modelimg"> |
| <div class="img-center"> | | <div class="img-center"> |
| <img src="https://static.igem.org/mediawiki/2014/0/0a/Aalto_Helsinki_Equations.png" class="img-responsive"></img> | | <img src="https://static.igem.org/mediawiki/2014/0/0a/Aalto_Helsinki_Equations.png" class="img-responsive"></img> |
- | <p class="kuvateksti">
| |
- | Kuvatekstiä voisi kirjoittaa tähän
| |
- | </p>
| |
| </div> | | </div> |
| </div> | | </div> |
| | | |
| + | <p class="modellatex"> |
| + | \begin{eqnarray*} |
| + | & & \frac{d[YF1]}{dt} = P_1Rbs_{YF1} + DP_1[YF1]_{phos} - (Deg_{YF1}+I_B)[YF1] \\ \quad \\ |
| + | & & \frac{d[YF1]_{phos}}{dt} = I_B[YF1] - (Deg_{\text{YF1}} + DP_1)[YF1]_{phos} \\ |
| + | \ |
| + | & & \frac{d[FixJ]}{dt} = P_1Rbs_{FixJ} + DP_2[FixJ]_{phos} - (C_{phos}[YF1]_{phos} + Deg_{FixJ})[FixJ] \\ |
| + | \\ |
| + | & & \frac{d[FixJ]_{phos}}{dt} = C_{phos}[YF1]_{phos}[FixJ] - (DP_2[FixJ]_{phos} + Deg_{FixJ}[FixJ]) \\ |
| + | \\ |
| + | & & \frac{d[CI]}{dt} = P_2Rbs_{CI} - Deg_{CI}[CI] \\ |
| + | \\ |
| + | & & \frac{d[TetR]}{dt} = P_ARbs_{TetR_A} + P_BRbs_{TetR_B} - Deg_{TetR}[TetR] |
| + | \end{eqnarray*} |
| + | </p> |
| + | |
| + | <div class="row row-eq-height"> |
| + | <div class="center-block"> |
| + | <ul> |
| + | <h4 class="nopaddingtop">Legend</h4> |
| + | <li><strong>$[YF1]$</strong> = concentration of $YF1$ protein</li> |
| + | <li><strong>$[YF1]_{phos}$</strong> = concentration of phosphorylated $YF1$ protein</li> |
| + | <li><strong>$[FixJ]$</strong> = concentration of $FixJ$ protein</li> |
| + | <li><strong>$[FixJ]_{phos}$</strong> = concentration of phosphorylated $FixJ$ protein</li> |
| + | <li><strong>$[CI]$</strong> = concentration of $CI$ protein</li> |
| + | <li><strong>$[TetR]$</strong> = concentration of $TetR$ protein</li> |
| + | <li><strong>$P_1$</strong> = relative strength of the first promoter in gene circuit</li> |
| + | <li><strong>$P_2$</strong> = relative strength of the $FixK_2$ promoter</li> |
| + | <li><strong>$P_A$</strong> = relative strength of the $P_R$ promoter, codes gene $A$</li> |
| + | <li><strong>$P_B$</strong> = relative strength of the $P_{RM}$ promoter, codes gene $B$</li> |
| + | <li><strong>$P_C$</strong> = relative strength of the promoter coding gene $C$ |
| + | <li><strong>$Rbs$</strong> = relative strengths of ribosome binding sites</li> |
| + | <li><strong>$Deg$</strong> = degradation coefficient</li> |
| + | <li><strong>$C_{phos}$</strong> = phosphorylation coefficient</li> |
| + | <li><strong>$DP$</strong> = de-phosphorylation coefficient</li> |
| + | </ul> |
| + | </div> |
| + | </div> |
| + | <br><br> |
| <p> | | <p> |
- | These equations describe the essential proteins our system (YF1, FixJ, Phosphorylated YF1, Phosphorylated FixJ, CI, TetR) Proteins are produced depending on the strength of promoter and ribosome binding site, and also when phosphorylated protein (denoted with phos) is dephosphorylated back to its original form. The concentration of all proteins is reduced by decaying, which depends on the concentration of protein in question. | + | These equations describe the essential proteins our system ($YF1$, $FixJ$, Phosphorylated $YF1$, Phosphorylated $FixJ$, $CI$, $TetR$). Proteins are produced with rates that depend on the strength of respective promoter and ribosome binding site, and also when phosphorylated protein (denoted with $phos$) is dephosphorylated back to its original form. The concentration of all proteins reduces by degradation and its depends on the concentration of protein in question. |
| </p> | | </p> |
| | | |
- | <h3>Coefficients</h3> | + | <h3>Rate Coefficients</h3> |
| + | |
| <p> | | <p> |
- | P1, P2, PA and PB denote the relative strengths of promoters and Rbs1&Rbs2 the relative strengths of ribosome binding sites, which both affect the protein synthesis linearly. Each protein has its own degradation coefficient (denoted Deg). I(B) is the combined effect of blue light that affects the phosphorylation of YF1. The phosphorylation of FixJ is assumed to depend on phosphorylation coefficient C(phos) and the concentration of phosphorylated YF1. The dephosphorylation here depends on a respective dephosphorylation constant DP(1&2 for YF1 and FixJ). | + | $P_1$, $P_2$, $P_A$ and $P_B$ denote the relative strengths of the promoters. $Rbs$s are the relative strengths of ribosome binding sites, which both affect the mRNA translation rate linearly. Each protein has its own degradation coefficient (denoted $Deg$). $I_B$ is the combined effect of blue light that affects the phosphorylation of $YF1$. The phosphorylation of $FixJ$ is assumed to depend on phosphorylation coefficient $C_{phos}$ and the concentration of phosphorylated $YF1$. The dephosphorylation here depends on the respective dephosphorylation coefficient $DP$(1&2 for $YF1$ and $FixJ$). Later on, we found out that non-phosphorylated YF1 acts as a phosphatase on FixJ. However, these effects are not taken into account in our model. |
| </p> | | </p> |
| | | |
- | <h3>Promoters</h3> | + | <h3 class="nopaddingbottom">Equations for Promoter Activities</h3> |
| | | |
- | <div class="row"> | + | <div class="row modelimg"> |
| <div class="img-center"> | | <div class="img-center"> |
| <img src="https://static.igem.org/mediawiki/2014/a/a0/Aalto_Helsinki_Promoters.png" class="img-responsive"></img> | | <img src="https://static.igem.org/mediawiki/2014/a/a0/Aalto_Helsinki_Promoters.png" class="img-responsive"></img> |
- | <p class="kuvateksti">
| |
- | Tälle kans kuvatekstiä joohan.
| |
- | </p>
| |
| </div> | | </div> |
| </div> | | </div> |
| | | |
- | <h3>Lights</h3> | + | <p class="modellatex"> |
| + | \begin{eqnarray*} |
| + | & & P_2 = C_{P_2}N_1[CI] \\ |
| + | \\ |
| + | & & P_A = |
| + | \begin{cases} |
| + | C_{P_A}N_1[CI] \quad \text{if} \quad N_1[CI] \leq 1 \\ |
| + | 0 \quad \text{if} \quad N_1[CI] > 1 |
| + | \end{cases} \\ |
| + | \\ |
| + | & & P_B = |
| + | \begin{cases} |
| + | C_{P_B}N[CI] \quad \text{if} \quad N_1[CI] < 1 \\ |
| + | C_{P_B}(1-(N_1[CI] - 1)) \quad \text{if} \quad 1 \leq N_1[CI] < 2 \\ |
| + | 0 \quad \text{if} \quad N_1[CI] \geq 2 |
| + | \end{cases} \\ |
| + | \\ |
| + | & & P_C = |
| + | \begin{cases} |
| + | C_{P_A}(1-N_2[TetR]) \quad \text{if} \quad N_2[TetR] \leq 1 \\ |
| + | 0 \quad \text{if} \quad N_2[TetR] > 1 |
| + | \end{cases} |
| + | \end{eqnarray*} |
| + | </p> |
| + | <h3 class="nopaddingtop">Promoter Coefficients</h3> |
| | | |
| <p> | | <p> |
- | Here, the C's denote the respective promoter's maximum activity. The N in front of CI and TetR concentrations is a normalization coefficient, | + | Here the $C_{P_n}$s denote the respective promoter's maximum activity. The $N_1$ and $N_2$ in front of $CI$ and $TetR$ concentrations are normalization coefficients, which are needed to map the values of $[CI]$ to the interval $(0,3)$ and values of $[TetR]$ to the interval $(0,1)$. This way, when multiplied by the promoters' maximum activity values, we get values in the interval $(0, C_{P_n})$ The functions definitions must also change so that they never take negative values, which would make no sense when it refers to promoter activity. We have simplified the model so that the promoters’ activity only depend on $[CI]$ and $[FixJ]$. |
- | which is needed to adjust the concentration so that it decreases the promotor activity from 1 to 0 times the maximum. The fuctions definitions
| + | |
- | must also change so that they never take negative values, which would make no sense when talking about promoter activities.
| + | |
| </p> | | </p> |
| | | |
Line 94: |
Line 203: |
| | | |
| <h2>Simulation</h2> | | <h2>Simulation</h2> |
| + | |
| + | <h3 class="kakspaddingtop">Overview </h3> |
| + | |
| + | <p> |
| + | Based on our mathematical model, we created an interactive simulation and a graphical user interface for it. This visualization, although idealized, is suitable for demonstrating the intended functioning of our gene circuit and the gene switch system. We included two sliders, one for red and one for blue light. With these, the user can see the effect of the light intensity to the simulated bacterial culture in real time. Proteins $A$, $B$ and $C$ are represented by GFP, RFP and BFP (green, red and blue fluorescent protein) and therefore the bacteria change color when lights’ intensities are changed. |
| + | <p/> |
| | | |
| <h3>Lights </h3> | | <h3>Lights </h3> |
| | | |
| <p> | | <p> |
- | [Blue light affects phosphorylation] | + | In our system, the communication between user and the bacteria happens via illuminating the culture with blue and red light. Blue light phosphorylates the $YF1$-protein, which is the key to controlling the production of $A$, $B$ and $C$ proteins inside the bacteria. In the simulation, this is represented by change in the $I_B$ parameter from the mathematical model. This takes values between 0 and 1, and the rest of the system behaves as described previously. |
| </p> | | </p> |
| <p> | | <p> |
- | [Red light affects the rate of production as an idealized, completely arbitrary linear coefficient] | + | Our original design also had a transcription intensity switch, controlled by red light. Due to time constrains, this wasn't yet implemented in our gene circuit. In the simulation, we added a second user controlled parameter in front of every promoter. This takes values between 0 and 1, representing the zero production state and the production at maximum promoter activity. With this, the user has control of all desired protein concentrations. The assumed mechanism is idealized and has a linear effect on the activity. |
| </p> | | </p> |
| | | |
- | <h3>Runge-Kutta method </h3> | + | <h3>Runge-Kutta Method </h3> |
| | | |
| <p> | | <p> |
- | The dynamics of our system were approximated using 4th order Runge-Kutta method for the differential equations in our mathematical model [insert Runge-Kutta description] | + | The dynamics of our system were approximated and computed using 4th order Runge-Kutta method (RK4) for the differential equations in our mathematical model. The point of this method is to approximate the function in question by it's derivatives without having to solve the function itself. The starting values of each concentration are assumed to be zero, so $y(0) = 0$. The simulation computes the next datapoint adding the derivative times a timestep $h$ to previous concentrations. The method uses a mean value of different derivatives (the different k's below) during timestep $h$ to get a more accurate approximation. |
| </p> | | </p> |
| | | |
- | <h3>Parameters</h3>
| + | <div class="row modelimg"> |
| + | <div class="img-center"> |
| + | <img src="https://static.igem.org/mediawiki/2014/6/63/Aalto_Helsinki_IGEM_rungekutta.png" class="img-responsive"></img> |
| + | </div> |
| + | </div> |
| | | |
- | <p> | + | <p class="modellatex"> |
- | [we used completely arbitrary estimates of actual parameters / we consulted the followin publications to obtain desider values: [insert list]] | + | \begin{eqnarray*} |
| + | & & y' = f(t,y(t)), \quad y(t_0) = y_0 \\ |
| + | \\ |
| + | \\ |
| + | & & y_{n+1} = y_n + \frac{h}{6}(k_1 + 2k_2 + 2k_3 + k_4) \\ |
| + | & & t_{n+1} = t_n + h |
| + | \\ |
| + | \\ |
| + | & & k_1 = f(t_n,y_n) \\ |
| + | & & k_2 = f(t_n +\frac{h}{2}, y_n + \frac{h}{2}k_1) \\ |
| + | & & k_3 = f(t_n + \frac{h}{2}, y_n + \frac{h}{2}k_2) \\ |
| + | & & k_4 = f(t_n + \frac{h}{2}, y_n +hk_3) |
| + | \end{eqnarray*} |
| </p> | | </p> |
| | | |
- | <h3>Software implementation</h3> | + | <h3 class="nopaddingtop">Software Implementation</h3> |
| | | |
| <p> | | <p> |
- | A computational model was created based on our mathematical model and the Runge-Kutta approximation. We made a real-time plotting function to illustrate the dynamics with each timestep. We added two light switches so that the user can have an impact on our simulation in real time. This all was then further developed into a presentable, user-friendly form that is accessible from our website. The simulation itself was developed using Python and translated into Javascript for web implementation [moar coming] | + | A computational model was created based on our mathematical model and the RK4 approximation. We made a real-time visualisation script to illustrate the dynamics in a simple and clear graphic UI. We added two light switches so that the user can have an impact on our simulation in real time. This all was then further developed into a presentable, user-friendly form that is accessible from our website. The simulation itself was created using Python and translated into Javascript for web implementation. |
| </p> | | </p> |
- | </article>
| |
- |
| |
- | <article class="PCB">
| |
- | <h2>Simulation</h2>
| |
| | | |
| <div class="row"> | | <div class="row"> |
| <div class="img-center"> | | <div class="img-center"> |
- | <img src="https://static.igem.org/mediawiki/2014/0/03/Aalto_Helsinki_Simulation.png" class="img-responsive"> | + | <a href="http://igem-qsf.github.io/SimCircus/WebUI/" target="_blank"><img src="https://static.igem.org/mediawiki/2014/0/03/Aalto_Helsinki_Simulation.png" class="img-responsive"></a> |
| <p class="kuvateksti"> | | <p class="kuvateksti"> |
- | Tälle myös kuvateksti. | + | Here is a screenshot of the simulation. You can adjust the amount of the red and blue light and see how it affects the bacteria. You can also see how active each gene (A, B, C) is. |
| </p> | | </p> |
| </div> | | </div> |
Line 137: |
Line 264: |
| | | |
| <p> | | <p> |
- | To demonstrate our work to the general public in an event called Summer of Startups Demo Day, we made a <a href="http://aaltohelsinki.com/simulation">simulation</a> that shows our system in action. It shows an animated bacteria plate with adjustable light intensity sliders to remotely control the bacteria. The proteins the bacteria produce are colors, so you can see how the changes in light intensity correlate to the color of the colonies on the plate. The simulation also has a nice grap that shows the protein levels in one second intervals so you can see more clearly what's going on in the cell. | + | To demonstrate our work for the general public in an event, <a href="https://2014.igem.org/Team:Aalto-Helsinki/Business#Sos">Summer of Startups Demo Day</a>, we used the <a href="http://igem-qsf.github.io/SimCircus/WebUI/">simulation</a> to show our system in action. It can be accessed with a web browser and shows an animated bacterial plate with adjustable light intensity sliders to remotely control the bacteria. The proteins the bacteria produce in this simulation are colors, so you can see how the changes in light intensity correlate to the color of the colonies on the plate. The simulation also has a nice graph that shows the protein levels in real time so you can see more clearly what's going on in the cell. |
| </p> | | </p> |
| | | |
| <p> | | <p> |
- | All of the code (including a more in-detail Python graph simulation) is available at the project's <a href="http://github.com/iGEM-QSF/SimCircus">GitHub page.</a> | + | All the code (including the Python simulation with more detailed graphs) is available at the project's <a href="http://github.com/iGEM-QSF/SimCircus">GitHub page.</a> |
| </p> | | </p> |
| </article> | | </article> |
| | | |
| <div class="update Simulation"></div> | | <div class="update Simulation"></div> |
- | <div class="update Accuracy"></div> | + | <div class="update Discussion"></div> |
| | | |
| <article> | | <article> |
- | <div class="link" id="Accuracy"></div> | + | <div class="link" id="Discussion"></div> |
- |
| + | |
- | <h2>Accuracy </h2> | + | <h2 class="ykspaddingbottom">Discussion</h2> |
| | | |
| <p> | | <p> |
- | No noise, arbitrary parameters, simplified pathways and reaction equations -> over idealized, requires a lot of measurement of appropriate parameters and tuning to be realistic and accurate. Ideal for demonstration of our idea [insert in-depth error analysis] | + | Our model doesn’t take any noise into consideration. Therefore all interactions produce smooth, good-looking curves. On the other hand, the clear graphics generated by the simulation are easily interpretable, so even someone not familiar with science can clearly see what's going on in our system. |
| + | </p> |
| + | |
| + | <p> |
| + | So far we have also used arbitrary parameters, simplified reaction pathways and reaction equations. The parameters were acquired by estimation and empirical testing. Full experimental data wasn't available when the simulation was created, so derivation of differential equations by using the law of mass-action was not possible. All reaction mechanisms are our own estimations of what's going on inside the bacteria and the system. |
| + | </p> |
| + | |
| + | <p> |
| + | Some unexpected observations were made after running the simulation several times. We noticed that when activating all the promoters while the $CI$ concentration was zero, both proteins $A$ and $C$ were produced simultaneously instead of just the anticipated $A$. When $TetR$ is further produced by the activation of $P_R$ promoter, $C$ production is repressed and the concentration drops back to zero. Secondly, when blue light intensity is set to a level that corresponds to the maximum concentration of either $A$ or $B$, the promoter activity adjustable using the red light and it should only affect the said concentration. Again, when lowering the activity enough, we noticed that a spike in production of protein $C$ appeared again. This seemed to be caused by the lowered concentration of $TetR$ that allowed a leak in $P_C$ promoter. We had no idea that a $C$ spike would appear based on the theoretical model of our gene circuit, so this phenomenon was discovered early thanks to our simulation. |
| + | </p> |
| + | |
| + | <p> |
| + | We also noticed that going from directly producing the protein $A$ to protein $C$, or reversely, from $C$ to $A$ is virtually impossible without producing some protein $B$ along the way. We thus concluded that our Gene Switch is not entirely orthogonal between the three channels. The possible interactions with other products with protein $B$ are needed to be taken under consideration when designing applications that only use genes $A$ and $C$. |
| + | </p> |
| + | |
| + | <p> |
| + | Upon later research, we found out the actual mechanism with which $FixJ$ was phosphorylated. In contrast to our model, the phosphate is actually transmitted from $YF1$ to $FixJ$. In their paper, Möglich et al. (2009, reference in research section) showed that in a two-step reaction, $FixL$ first undergoes autophosphorylation and then transfers the phosphate to its cognate, noncovalently bound, response regulator $FixJ$. The $YF1$ protein is a derivative of $FixL$ with different sensory domain, so it behaves the same way in this reaction. This wasn't however implemented in our model. |
| + | </p> |
| + | |
| + | <p> |
| + | In it's current state the simulation gives a good idea on how the system should work. Making it realistic and accurate requires measuring the appropriate parameters, research on appropriate scientific publications, and tuning. Still, this version is ideal for demonstration of our idea, bringing the visual UI a significant marketing value. |
| </p> | | </p> |
| | | |
| </article> | | </article> |
- | <div class="update Simulation"></div></div> | + | <div class="update Simulation"></div> |
| + | </div> |
| </body> | | </body> |
| <script> | | <script> |
Line 167: |
Line 315: |
| } else $('#navigation a.home').addClass('active'); | | } else $('#navigation a.home').addClass('active'); |
| }); | | }); |
| + | </script> |
| + | <script type="text/javascript"> |
| + | // Picture reference script |
| + | /* |
| + | USAGE: |
| + | tag img with a ref that is connected to the image, such as: |
| + | <img src="aaltohelsinki.com/testikuva.png" ref="varioskan" /> |
| + | When you insert a reference in text, put a tag with a ref attribute: |
| + | <a ref="varioskan"></a> |
| + | Do not put href attribute, it will be replaced with a link to the image. |
| + | Moreover, inner html of the anchor tag will be "figure x" where x is the |
| + | correct figure number. If span or anchor has "." as the inner html, the |
| + | caption will be capitalized. |
| + | */ |
| + | var images = $('img[ref]'); |
| + | $.each(images, function(index, e){ |
| + | var referenceName = e.getAttribute("ref"); |
| + | if (!e.id){ |
| + | e.setAttribute("id","figure"+(index+1)); |
| + | } |
| + | $.each($('a[ref="'+referenceName+'"]'), function(j, e2){ |
| + | e2.setAttribute("href","#"+e.id); |
| + | if (e2.innerHTML == "."){ |
| + | e2.innerHTML = "Figure " + (index+1); |
| + | } else { |
| + | e2.innerHTML = "figure " + (index+1); |
| + | } |
| + | }); |
| + | $.each($('span[ref="'+referenceName+'"]'), function(j, e2){ |
| + | e2.setAttribute("href","#"+e.id); |
| + | if (e2.innerHTML == "."){ |
| + | e2.innerHTML = "Figure " + (index+1); |
| + | } else { |
| + | e2.innerHTML = "figure " + (index+1); |
| + | } |
| + | }); |
| + | } |
| + | ); |
| + | |
| + | // Table reference script |
| + | /* |
| + | USAGE: |
| + | tag table with a tab that is connected to the table, such as: |
| + | <table ref="intensities" /> |
| + | When you insert a reference in text, put a tag with a ref attribute: |
| + | <a tab="intensities"></a> |
| + | Do not put href attribute, it will be replaced with a link to the image. |
| + | Moreover, inner html of the anchor tag will be "table x" where x is the |
| + | correct table number. If span or anchor has "." as the inner html, the |
| + | caption will be capitalized. |
| + | */ |
| + | var tables = $('table[tab], img[tab]'); |
| + | $.each(tables, function(index, e){ |
| + | var tableName = e.getAttribute("tab"); |
| + | if (!e.id){ |
| + | e.setAttribute("id","table"+(index+1)); |
| + | } |
| + | $.each($('a[tab="'+tableName+'"]'), function(j, e2){ |
| + | e2.setAttribute("href","#"+e.id); |
| + | if (e2.innerHTML == "."){ |
| + | e2.innerHTML = "Table " + (index+1); |
| + | } else { |
| + | e2.innerHTML = "table " + (index+1); |
| + | } |
| + | }); |
| + | $.each($('span[tab="'+tableName+'"]'), function(j, e2){ |
| + | e2.setAttribute("href","#"+e.id); |
| + | if (e2.innerHTML == "."){ |
| + | e2.innerHTML = "Table " + (index+1); |
| + | } else { |
| + | e2.innerHTML = "table " + (index+1); |
| + | } |
| + | }); |
| + | } |
| + | ); |
| </script> | | </script> |
| </html> | | </html> |
| {{:Team:Aalto-Helsinki/footer}} | | {{:Team:Aalto-Helsinki/footer}} |
Modeling
Before bringing all the parts together in the lab, we built our switch in the mathematical world.
Introduction
To get an idea of how our gene circuit would work in an ideal situation, we explored the structure and dynamics of our system by creating a mathematical model of the reaction kinetics and a simulation that can be controlled in real time. We started working with the mathematical model without any detailed information about the system. We derived the differential equations to demonstrate how blue light and the changes in phosphorylated $YF1$ and $FixJ$ concentrations would affect the production of our three target proteins. We labeled them simply $A$, $B$ and $C$, because the system is intended to be used with any three genes encoding the proteins of choice.
Using our equations we constructed a simulation showing the effects of red and blue light on our system in real time. The user can control the input of both lights to see how they affect the production of proteins $A$, $B$ and $C$. We experimented with different values for all constants and via trial-and-error iteration we arrived to a visualized simulation that can be used to demonstrate the intended function of our system. This is an idealization. Based on present and future measurement data, the parameters can be adjusted to better the dynamics of our system.
Mathematical Model
Assumptions
We assumed that the species identified in our gene circuit are the only ones that affect the overall concentrations inside the bacteria. We further assumed that binding of $CI$ to $O_R$ operator site does not impact the overall $CI$ concentration and that the amount of $CI$ bound to the $O_R$ sites was proportional to $CI$ concentration. The model is also strictly deterministic and doesn’t take any noise into account. The phosphorylation, decay, binding and production of proteins are assumed to be linear functions of concentration. We further assumed that the phosphorylation of $FixJ$ by phosphorylated $YF1$ would not involve phosphate transfer between the reacting molecules.
The first model was constructed before our lab work had even begun and it contains many harsh simplifications. Our aim was to get a general picture of how the system could work in ideal conditions and how stable it was.
Equations for Dynamics
Based on the assumptions made before, we arrived at following differential equations to describe the idealized dynamics of our system:
\begin{eqnarray*}
& & \frac{d[YF1]}{dt} = P_1Rbs_{YF1} + DP_1[YF1]_{phos} - (Deg_{YF1}+I_B)[YF1] \\ \quad \\
& & \frac{d[YF1]_{phos}}{dt} = I_B[YF1] - (Deg_{\text{YF1}} + DP_1)[YF1]_{phos} \\
\
& & \frac{d[FixJ]}{dt} = P_1Rbs_{FixJ} + DP_2[FixJ]_{phos} - (C_{phos}[YF1]_{phos} + Deg_{FixJ})[FixJ] \\
\\
& & \frac{d[FixJ]_{phos}}{dt} = C_{phos}[YF1]_{phos}[FixJ] - (DP_2[FixJ]_{phos} + Deg_{FixJ}[FixJ]) \\
\\
& & \frac{d[CI]}{dt} = P_2Rbs_{CI} - Deg_{CI}[CI] \\
\\
& & \frac{d[TetR]}{dt} = P_ARbs_{TetR_A} + P_BRbs_{TetR_B} - Deg_{TetR}[TetR]
\end{eqnarray*}
Legend
- $[YF1]$ = concentration of $YF1$ protein
- $[YF1]_{phos}$ = concentration of phosphorylated $YF1$ protein
- $[FixJ]$ = concentration of $FixJ$ protein
- $[FixJ]_{phos}$ = concentration of phosphorylated $FixJ$ protein
- $[CI]$ = concentration of $CI$ protein
- $[TetR]$ = concentration of $TetR$ protein
- $P_1$ = relative strength of the first promoter in gene circuit
- $P_2$ = relative strength of the $FixK_2$ promoter
- $P_A$ = relative strength of the $P_R$ promoter, codes gene $A$
- $P_B$ = relative strength of the $P_{RM}$ promoter, codes gene $B$
- $P_C$ = relative strength of the promoter coding gene $C$
- $Rbs$ = relative strengths of ribosome binding sites
- $Deg$ = degradation coefficient
- $C_{phos}$ = phosphorylation coefficient
- $DP$ = de-phosphorylation coefficient
These equations describe the essential proteins our system ($YF1$, $FixJ$, Phosphorylated $YF1$, Phosphorylated $FixJ$, $CI$, $TetR$). Proteins are produced with rates that depend on the strength of respective promoter and ribosome binding site, and also when phosphorylated protein (denoted with $phos$) is dephosphorylated back to its original form. The concentration of all proteins reduces by degradation and its depends on the concentration of protein in question.
Rate Coefficients
$P_1$, $P_2$, $P_A$ and $P_B$ denote the relative strengths of the promoters. $Rbs$s are the relative strengths of ribosome binding sites, which both affect the mRNA translation rate linearly. Each protein has its own degradation coefficient (denoted $Deg$). $I_B$ is the combined effect of blue light that affects the phosphorylation of $YF1$. The phosphorylation of $FixJ$ is assumed to depend on phosphorylation coefficient $C_{phos}$ and the concentration of phosphorylated $YF1$. The dephosphorylation here depends on the respective dephosphorylation coefficient $DP$(1&2 for $YF1$ and $FixJ$). Later on, we found out that non-phosphorylated YF1 acts as a phosphatase on FixJ. However, these effects are not taken into account in our model.
Equations for Promoter Activities
\begin{eqnarray*}
& & P_2 = C_{P_2}N_1[CI] \\
\\
& & P_A =
\begin{cases}
C_{P_A}N_1[CI] \quad \text{if} \quad N_1[CI] \leq 1 \\
0 \quad \text{if} \quad N_1[CI] > 1
\end{cases} \\
\\
& & P_B =
\begin{cases}
C_{P_B}N[CI] \quad \text{if} \quad N_1[CI] < 1 \\
C_{P_B}(1-(N_1[CI] - 1)) \quad \text{if} \quad 1 \leq N_1[CI] < 2 \\
0 \quad \text{if} \quad N_1[CI] \geq 2
\end{cases} \\
\\
& & P_C =
\begin{cases}
C_{P_A}(1-N_2[TetR]) \quad \text{if} \quad N_2[TetR] \leq 1 \\
0 \quad \text{if} \quad N_2[TetR] > 1
\end{cases}
\end{eqnarray*}
Promoter Coefficients
Here the $C_{P_n}$s denote the respective promoter's maximum activity. The $N_1$ and $N_2$ in front of $CI$ and $TetR$ concentrations are normalization coefficients, which are needed to map the values of $[CI]$ to the interval $(0,3)$ and values of $[TetR]$ to the interval $(0,1)$. This way, when multiplied by the promoters' maximum activity values, we get values in the interval $(0, C_{P_n})$ The functions definitions must also change so that they never take negative values, which would make no sense when it refers to promoter activity. We have simplified the model so that the promoters’ activity only depend on $[CI]$ and $[FixJ]$.
Simulation
Overview
Based on our mathematical model, we created an interactive simulation and a graphical user interface for it. This visualization, although idealized, is suitable for demonstrating the intended functioning of our gene circuit and the gene switch system. We included two sliders, one for red and one for blue light. With these, the user can see the effect of the light intensity to the simulated bacterial culture in real time. Proteins $A$, $B$ and $C$ are represented by GFP, RFP and BFP (green, red and blue fluorescent protein) and therefore the bacteria change color when lights’ intensities are changed.
Lights
In our system, the communication between user and the bacteria happens via illuminating the culture with blue and red light. Blue light phosphorylates the $YF1$-protein, which is the key to controlling the production of $A$, $B$ and $C$ proteins inside the bacteria. In the simulation, this is represented by change in the $I_B$ parameter from the mathematical model. This takes values between 0 and 1, and the rest of the system behaves as described previously.
Our original design also had a transcription intensity switch, controlled by red light. Due to time constrains, this wasn't yet implemented in our gene circuit. In the simulation, we added a second user controlled parameter in front of every promoter. This takes values between 0 and 1, representing the zero production state and the production at maximum promoter activity. With this, the user has control of all desired protein concentrations. The assumed mechanism is idealized and has a linear effect on the activity.
Runge-Kutta Method
The dynamics of our system were approximated and computed using 4th order Runge-Kutta method (RK4) for the differential equations in our mathematical model. The point of this method is to approximate the function in question by it's derivatives without having to solve the function itself. The starting values of each concentration are assumed to be zero, so $y(0) = 0$. The simulation computes the next datapoint adding the derivative times a timestep $h$ to previous concentrations. The method uses a mean value of different derivatives (the different k's below) during timestep $h$ to get a more accurate approximation.
\begin{eqnarray*}
& & y' = f(t,y(t)), \quad y(t_0) = y_0 \\
\\
\\
& & y_{n+1} = y_n + \frac{h}{6}(k_1 + 2k_2 + 2k_3 + k_4) \\
& & t_{n+1} = t_n + h
\\
\\
& & k_1 = f(t_n,y_n) \\
& & k_2 = f(t_n +\frac{h}{2}, y_n + \frac{h}{2}k_1) \\
& & k_3 = f(t_n + \frac{h}{2}, y_n + \frac{h}{2}k_2) \\
& & k_4 = f(t_n + \frac{h}{2}, y_n +hk_3)
\end{eqnarray*}
Software Implementation
A computational model was created based on our mathematical model and the RK4 approximation. We made a real-time visualisation script to illustrate the dynamics in a simple and clear graphic UI. We added two light switches so that the user can have an impact on our simulation in real time. This all was then further developed into a presentable, user-friendly form that is accessible from our website. The simulation itself was created using Python and translated into Javascript for web implementation.
Here is a screenshot of the simulation. You can adjust the amount of the red and blue light and see how it affects the bacteria. You can also see how active each gene (A, B, C) is.
To demonstrate our work for the general public in an event, Summer of Startups Demo Day, we used the simulation to show our system in action. It can be accessed with a web browser and shows an animated bacterial plate with adjustable light intensity sliders to remotely control the bacteria. The proteins the bacteria produce in this simulation are colors, so you can see how the changes in light intensity correlate to the color of the colonies on the plate. The simulation also has a nice graph that shows the protein levels in real time so you can see more clearly what's going on in the cell.
All the code (including the Python simulation with more detailed graphs) is available at the project's GitHub page.
Discussion
Our model doesn’t take any noise into consideration. Therefore all interactions produce smooth, good-looking curves. On the other hand, the clear graphics generated by the simulation are easily interpretable, so even someone not familiar with science can clearly see what's going on in our system.
So far we have also used arbitrary parameters, simplified reaction pathways and reaction equations. The parameters were acquired by estimation and empirical testing. Full experimental data wasn't available when the simulation was created, so derivation of differential equations by using the law of mass-action was not possible. All reaction mechanisms are our own estimations of what's going on inside the bacteria and the system.
Some unexpected observations were made after running the simulation several times. We noticed that when activating all the promoters while the $CI$ concentration was zero, both proteins $A$ and $C$ were produced simultaneously instead of just the anticipated $A$. When $TetR$ is further produced by the activation of $P_R$ promoter, $C$ production is repressed and the concentration drops back to zero. Secondly, when blue light intensity is set to a level that corresponds to the maximum concentration of either $A$ or $B$, the promoter activity adjustable using the red light and it should only affect the said concentration. Again, when lowering the activity enough, we noticed that a spike in production of protein $C$ appeared again. This seemed to be caused by the lowered concentration of $TetR$ that allowed a leak in $P_C$ promoter. We had no idea that a $C$ spike would appear based on the theoretical model of our gene circuit, so this phenomenon was discovered early thanks to our simulation.
We also noticed that going from directly producing the protein $A$ to protein $C$, or reversely, from $C$ to $A$ is virtually impossible without producing some protein $B$ along the way. We thus concluded that our Gene Switch is not entirely orthogonal between the three channels. The possible interactions with other products with protein $B$ are needed to be taken under consideration when designing applications that only use genes $A$ and $C$.
Upon later research, we found out the actual mechanism with which $FixJ$ was phosphorylated. In contrast to our model, the phosphate is actually transmitted from $YF1$ to $FixJ$. In their paper, Möglich et al. (2009, reference in research section) showed that in a two-step reaction, $FixL$ first undergoes autophosphorylation and then transfers the phosphate to its cognate, noncovalently bound, response regulator $FixJ$. The $YF1$ protein is a derivative of $FixL$ with different sensory domain, so it behaves the same way in this reaction. This wasn't however implemented in our model.
In it's current state the simulation gives a good idea on how the system should work. Making it realistic and accurate requires measuring the appropriate parameters, research on appropriate scientific publications, and tuning. Still, this version is ideal for demonstration of our idea, bringing the visual UI a significant marketing value.