Team:UC Davis/Modeling
From 2010.igem.org
(One intermediate revision not shown) | |||
Line 47: | Line 47: | ||
<p>Not shown here are various simple translation and degradation reactions for the protein species; these equations are straightforward and don't merit much mention here. For our purposes, it is assumed that the translation rate is the same for all proteins.</p><br> | <p>Not shown here are various simple translation and degradation reactions for the protein species; these equations are straightforward and don't merit much mention here. For our purposes, it is assumed that the translation rate is the same for all proteins.</p><br> | ||
There is an added level of complexity for our construct. Because the device is intended to exhibit behavior at a multicellular level, and some of the species produced (specifically, quorum sensing molecules produced by las and lux pathways) must will be diffusing throughout the plate, we need a way to model diffusion of species. In general, molecular diffusion can be modelled by Fick's 2nd Law:<br /> <br /> | There is an added level of complexity for our construct. Because the device is intended to exhibit behavior at a multicellular level, and some of the species produced (specifically, quorum sensing molecules produced by las and lux pathways) must will be diffusing throughout the plate, we need a way to model diffusion of species. In general, molecular diffusion can be modelled by Fick's 2nd Law:<br /> <br /> | ||
- | + | <img src="https://static.igem.org/mediawiki/2010/6/60/Fick_second_law.png"> | |
<br/> | <br/> | ||
Line 53: | Line 53: | ||
<a name="impl"></a><p class="header">Implementation</p> | <a name="impl"></a><p class="header">Implementation</p> | ||
After we had derived the necessary equations, we began evaluating various packages that would allow us to compute the solutions to these equations over a large array of cells. Unfortunately, this quickly led to problems; we had decided early on that the best way to incorporate the diffusion component into our model was to discretize Fick's 2nd Law as a 2D Gaussian convolution:<br/><br/> | After we had derived the necessary equations, we began evaluating various packages that would allow us to compute the solutions to these equations over a large array of cells. Unfortunately, this quickly led to problems; we had decided early on that the best way to incorporate the diffusion component into our model was to discretize Fick's 2nd Law as a 2D Gaussian convolution:<br/><br/> | ||
- | + | <img src="https://static.igem.org/mediawiki/2010/d/d7/UCD2010GaussianConvolution.png"> | |
<br/><br/> | <br/><br/> | ||
We could then compute the diffusion step as a second pass during each time step, after the ODEs had been evaluated - thus skirting around the issue of having to solve thousands of simultaneous PDEs, while still producing realistic results. This would require a computational package that was flexible enough to allow us to hook into the ODE solver, performing our own calculations at each increment. An initial assessment showed that this was going to be more difficult than expected, so we decided to roll our own solution in C++.<br/><br/> | We could then compute the diffusion step as a second pass during each time step, after the ODEs had been evaluated - thus skirting around the issue of having to solve thousands of simultaneous PDEs, while still producing realistic results. This would require a computational package that was flexible enough to allow us to hook into the ODE solver, performing our own calculations at each increment. An initial assessment showed that this was going to be more difficult than expected, so we decided to roll our own solution in C++.<br/><br/> | ||
+ | Because computational speed was not expected to be an issue, we opted to integrate the ODEs using the Euler method at each increment, followed by a convolution of the quorum sensing molecules according to the above kernel. This method should be reasonably accurate given a small enough timestep.<br/><br/> | ||
- | + | <img src="https://static.igem.org/mediawiki/2010/3/34/UCD2010Euler.gif"> <br/> | |
- | <br/><br/> | + | The program then outputs a bitmap at each iteration with the Fluorescent Protein, Lux signal molecule, and Las signal molecule mapped to the Red, Green, and Blue channels, respectively; as well as a plain-text file with these numbers in a format that can be read by a plotting package (such as the free gnuplot, which we used to generate the graphs on this page). <br/><br/> |
- | + | We also wrote a simple GUI, which would allow us visualize the simulation output as it was running. | |
- | + | ||
+ | <br/> | ||
+ | Finally, the program used an input bitmap to determine the amount of "light" shining on the system, which for our purposes was mapped directly to intercellular OmpR concentration. This allowed us to perform multiple experiments with various patterns, to test the behavior of our system under different conditions. | ||
- | <p class="header">Results</p> | + | <a name = "res"><p class="header">Results</p></a> |
- | Pictured here is the | + | Pictured here is the output of one of our completed simulation runs. In this particular run, we initialized the system with a vertical stimulus down the center of the plate, resulting in linear oscillation outwards towards the edges. |
- | <br/><img src="https://static.igem.org/mediawiki/2010/1/19/UCD_SimuOP.png" width="680px" height="450px"><br/> | + | <br/><img src="https://static.igem.org/mediawiki/2010/1/19/UCD_SimuOP.png" width="680px" height="450px"><br/>This result demonstrates the theoretical feasability of our construct under the conditions present in the simulation. |
<br/> | <br/> | ||
- | <br/>To further test the simulation, we decided to try another type of initial stimulus and observe the results. The stimulus we chose was seeding the oscillation at the four corners of the "plate". The following is the result of this run, which again | + | <br/>To further test the simulation, we decided to try another type of initial stimulus and observe the results. The stimulus we chose was seeding the oscillation at the four corners of the "plate". The following is the result of this run, which again reflects the intended behavior of our system. |
- | <br/><img src="https://static.igem.org/mediawiki/2010/9/98/UCD_SimuOPCircles.png" width="680px" height="450px"> | + | <br/><img src="https://static.igem.org/mediawiki/2010/9/98/UCD_SimuOPCircles.png" width="680px" height="450px"> <br/><br/> |
+ | |||
</td> | </td> | ||
</tr></table></td></tr> | </tr></table></td></tr> | ||
Line 85: | Line 89: | ||
<li><a href="#goals" class="help">Goals</a></li> | <li><a href="#goals" class="help">Goals</a></li> | ||
<li><a href="#maths" class="help">Equations</a></li> | <li><a href="#maths" class="help">Equations</a></li> | ||
+ | <li><a href="#impl" class="help">Implementation</a></li> | ||
+ | <li><a href="#res" class="help">Results</a></li> | ||
</ul> </td> | </ul> </td> | ||
</tr> | </tr> |
Latest revision as of 02:13, 28 October 2010
|
|
|