Difference between revisions of "Team:Paris Bettencourt/Modeling"
(merge modeling and software pages) |
|||
Line 5: | Line 5: | ||
<html> | <html> | ||
− | < | + | <h1>Modeling</h1> |
+ | |||
+ | <h2>Introduction</h2> | ||
Based on a set of ordinary differential equations (ODE) describing the kinetics of the cells' differentiation, we designed a model to find the best | Based on a set of ordinary differential equations (ODE) describing the kinetics of the cells' differentiation, we designed a model to find the best | ||
Line 22: | Line 24: | ||
<br /> | <br /> | ||
− | < | + | <h2>Deterministic model</h2> |
− | < | + | <h3>Parameters</h3> |
We conceived a simple model with the minimum number of parameters. | We conceived a simple model with the minimum number of parameters. | ||
<br /> | <br /> | ||
Line 38: | Line 40: | ||
</ul> | </ul> | ||
− | < | + | <h3>Kinetic equations</h3> |
We wrote four simple kinetic equations. | We wrote four simple kinetic equations. | ||
<br /> | <br /> | ||
Line 53: | Line 55: | ||
\] | \] | ||
− | < | + | <h3>Formal mathematical solution</h3> |
− | < | + | <h4>Translation in ordinary differential equations</h4> |
We used the law of mass action to write the ordinary differential equations based on kinetic equations \((1)\), \((2)\), \((3)\) and \((4)\). | We used the law of mass action to write the ordinary differential equations based on kinetic equations \((1)\), \((2)\), \((3)\) and \((4)\). | ||
<br /> | <br /> | ||
Line 77: | Line 79: | ||
\] | \] | ||
− | < | + | <h4>Mathematical resolution</h4> |
Simple ordinary differential equations' resolution methods are used to find the solutions of the previous equations \((5)\), \((6)\), and \((7)\). | Simple ordinary differential equations' resolution methods are used to find the solutions of the previous equations \((5)\), \((6)\), and \((7)\). | ||
<br /> | <br /> | ||
Line 119: | Line 121: | ||
\] | \] | ||
− | < | + | <h3>Vitamin optimization</h3> |
Our goal is to optimize the vitamin production. We can only change three parameters : \(k_{1}\), \(MC_0\) and \(DC_0\). | Our goal is to optimize the vitamin production. We can only change three parameters : \(k_{1}\), \(MC_0\) and \(DC_0\). | ||
<br /> | <br /> | ||
Line 150: | Line 152: | ||
<br /> | <br /> | ||
In our case, we chose of course the \(k_{1}\) that optimizes the vitamin production <i>i.e.</i> \(k_{1} = 0.207\). | In our case, we chose of course the \(k_{1}\) that optimizes the vitamin production <i>i.e.</i> \(k_{1} = 0.207\). | ||
− | < | + | <h3>Deterministic evolution of mother cell, differentiated cell and vitamin numbers</h3> |
− | We wrote a deterministic algorithm with MATLAB using the previous solutions \((8)\), \((9)\) and \((10)\). For those interested, the source code is available on the | + | We wrote a deterministic algorithm with MATLAB using the previous solutions \((8)\), \((9)\) and \((10)\). For those interested, the source code is available on the software section. |
<br /> | <br /> | ||
In order to optimize the vitamin production, we use the same parameters as previously and set \(k_{1}\) with the previous resulting value <i>i.e.</i> \(k_{1} = | In order to optimize the vitamin production, we use the same parameters as previously and set \(k_{1}\) with the previous resulting value <i>i.e.</i> \(k_{1} = | ||
Line 167: | Line 169: | ||
This result seems relevant. The model does not take into account the cells' death and the nutrients present in the medium. | This result seems relevant. The model does not take into account the cells' death and the nutrients present in the medium. | ||
− | < | + | <h2>Stochastic model</h2> |
− | < | + | <h3>Parameters</h3> |
We used more parameters than the deterministic model. Indeed, because of the nature of the algorithm, we need a constant rate probability distribution. | We used more parameters than the deterministic model. Indeed, because of the nature of the algorithm, we need a constant rate probability distribution. | ||
<br /> | <br /> | ||
Line 217: | Line 219: | ||
</ul> | </ul> | ||
− | < | + | <h3>Algorithm</h3> |
− | < | + | <h4>Introduction</h4> |
In the program, each cell is a structure containing three elements. | In the program, each cell is a structure containing three elements. | ||
Line 252: | Line 254: | ||
<img src="https://static.igem.org/mediawiki/2015/7/72/GeneralStochasticAlgorithm.png" height="420" style="float:right;" alt="Algorithm flowchart" title="Algorithm flowchart" > | <img src="https://static.igem.org/mediawiki/2015/7/72/GeneralStochasticAlgorithm.png" height="420" style="float:right;" alt="Algorithm flowchart" title="Algorithm flowchart" > | ||
− | < | + | <h4>Step 1 : Initialize the cells.</h4> |
First of all we have to generate the first cells in accordance with \(MC_0\) and \(DC_0\). | First of all we have to generate the first cells in accordance with \(MC_0\) and \(DC_0\). | ||
<br /> | <br /> | ||
For each cell we set the cell type, the next event and the time before the next event. | For each cell we set the cell type, the next event and the time before the next event. | ||
<br /> | <br /> | ||
− | < | + | <h4>Step 2 : Choose the next event among all cells.</h4> |
We have an array containing all the cells. Each cell contains the time before its next event (divide or differentiate). | We have an array containing all the cells. Each cell contains the time before its next event (divide or differentiate). | ||
<br /> | <br /> | ||
The next event time processed by the algorithm is the smallest cell next event time. | The next event time processed by the algorithm is the smallest cell next event time. | ||
<br /> | <br /> | ||
− | < | + | <h4>Step 3 : Do the next event.</h4> |
Now that we know the next event type and the concerned cell (only one cell is involved here), we compute this event. | Now that we know the next event type and the concerned cell (only one cell is involved here), we compute this event. | ||
<br /> | <br /> | ||
Line 292: | Line 294: | ||
</ul> | </ul> | ||
− | < | + | <h4>Step 4 : Update the simulation time.</h4> |
For each cell except the concerned cell, define the cell next event time with the following formula. | For each cell except the concerned cell, define the cell next event time with the following formula. | ||
Line 307: | Line 309: | ||
</ul> | </ul> | ||
− | < | + | <h4>Step 5 : Go to step 2 until the simulation time is superior to the fermentation period.</h4> |
We do this process until the simulation time is superior to the fermentation period. | We do this process until the simulation time is superior to the fermentation period. | ||
The number of cells increases with an exponential law. The computational power increases with the same law. | The number of cells increases with an exponential law. The computational power increases with the same law. | ||
<br /> | <br /> | ||
Do not try to process a long simulation time if your computer is not powerful. | Do not try to process a long simulation time if your computer is not powerful. | ||
− | < | + | <h4>Step 6 : Show the results.</h4> |
Here is a graph generated by the stochastic algorithm. | Here is a graph generated by the stochastic algorithm. | ||
<br /> | <br /> | ||
Line 325: | Line 327: | ||
<p style="text-align:center"><b>Figure 4 :</b> Distribution of event time probability.</p> | <p style="text-align:center"><b>Figure 4 :</b> Distribution of event time probability.</p> | ||
− | < | + | <h3>Vitamin optimization</h3> |
Like the deterministic model our goal is to maximize the vitamin production. | Like the deterministic model our goal is to maximize the vitamin production. | ||
<br /> | <br /> | ||
Line 429: | Line 431: | ||
</ul> | </ul> | ||
− | < | + | <h2>Conclusion</h2> |
As we can see, the stochastic and the deterministic models provide <i>a priori</i> different results. | As we can see, the stochastic and the deterministic models provide <i>a priori</i> different results. | ||
Line 443: | Line 445: | ||
We are able to maximize the vitamin production by determining the best rate constant \(k_{1}\) and therefore the best doubling time \(\mu_{1}\) to set the differentiation rate. | We are able to maximize the vitamin production by determining the best rate constant \(k_{1}\) and therefore the best doubling time \(\mu_{1}\) to set the differentiation rate. | ||
− | < | + | <h2>MATLAB algorithm</h2> |
− | In order to make this model and code accessible, understandable and editable by everyone, we have created a | + | In order to make this model and code accessible, understandable and editable by everyone, we have created a software section. |
<br /> | <br /> | ||
Feel free to download the <a href="https://github.com/iGEMParisBettencourt2015" title="Source code in GitHub" >source code</a> in GitHub, modify it and make it accessible for everyone. | Feel free to download the <a href="https://github.com/iGEMParisBettencourt2015" title="Source code in GitHub" >source code</a> in GitHub, modify it and make it accessible for everyone. | ||
− | <h3> | + | <h1>Software</h1> |
+ | |||
+ | <h2>Introduction</h2> | ||
+ | As explained on the modeling section, this program models the cell population evolution with mother cell differentiation and cell division. | ||
+ | <br /> | ||
+ | We focus here on the stochastic program. | ||
+ | |||
+ | <h2>Files</h2> | ||
+ | The MATLAB code is available on <a href="https://github.com/iGEMParisBettencourt2015/modeling" title="Source code in GitHub" >GitHub</a> under the GNU General Public License version 3.0. | ||
+ | <br /> | ||
+ | Here is a quick explanation of the different files <i>i.e.</i> the different functions. | ||
+ | <h3>Stochastic algorithm</h3> | ||
+ | <ul> | ||
+ | <li>\(timeEvolutionStochastic\) : calculate the time evolution.</li> | ||
+ | <li>\(checkInput\) : check the input and show an error message if the input is not good.</li> | ||
+ | <li>\(elmPixel\) : find the coordinates of a pixel around another pixel.</li> | ||
+ | <li>\(errorProgramm\) : display an error and stop the program.</li> | ||
+ | <li>\(freePosition\) : create a list of free pixels around one pixel.</li> | ||
+ | <li>\(getComputerName\) : get the computer name.</li> | ||
+ | <li>\(getSizeMat\) : find the matrix size.</li> | ||
+ | <li>\(imageToMatrix\) : convert an image into a matrix.</li> | ||
+ | <li>\(initCells\) : initialize the cells.</li> | ||
+ | <li>\(initialization\) : initialize the program.</li> | ||
+ | <li>\(initTimeEvent\) : calculate the different time.</li> | ||
+ | <li>\(initVariables\) : initialize the variables.</li> | ||
+ | <li>\(isBinary\) : check if a number is 0 or 1.</li> | ||
+ | <li>\(isPositiveInteger\) : check if a number is a positive integer (1) or not (0).</li> | ||
+ | <li>\(makeCells\) : make the cells.</li> | ||
+ | <li>\(randEvent\) : generate the next random event.</li> | ||
+ | <li>\(randPosition\) : find a free position for a cell.</li> | ||
+ | <li>\(saveInitialParameters\) : save the initial parameters in a text file.</li> | ||
+ | <li>\(saveResult\) : save and plot the results.</li> | ||
+ | <li>\(showAndSaveEventTimeDistribution\) : show and save the event time probability distribution.</li> | ||
+ | <li>\(showPopulation\) : show the cells matrix.</li> | ||
+ | <li>\(writeParameters\) : write a text file with the parameters.</li> | ||
+ | <li>\(launchStochasticProgramm\) : launch the stochastic time evolution simulation.</li> | ||
+ | <li>\(k1OptimizationStochastic\) : calculate the number of differentiated cells and vitamin with different \(k_{1}\) in a stochastic way.</li> | ||
+ | <li>\(k1OptimizationStochasticAndDeterministic\) : superimpose the deterministic and stochastic models.</li> | ||
+ | </ul> | ||
+ | <h3>Deterministic algorithm</h3> | ||
+ | <ul> | ||
+ | <li>\(timeEvolutionDeterministic\) : show the time evolution by numerical calculus and equations.</li> | ||
+ | <li>\(k1OptimizationDeterministic\) : calculate the number of differentiated cells with different \(k_{1}\) in a deterministic way.</li> | ||
+ | </ul> | ||
+ | <h2>Input</h2> | ||
+ | In order to launch a simulation, you must define five variables. | ||
+ | <ul> | ||
+ | <li>Initial cells.</li> | ||
+ | <li>Rate constants.</li> | ||
+ | <li>Fermentation period.</li> | ||
+ | <li>Action.</li> | ||
+ | <li>Folder name.</li> | ||
+ | </ul> | ||
+ | <h3>Cells input</h3> | ||
+ | You can choose to generate a random or a predetermined position for the initial cells. | ||
+ | <br /> | ||
+ | You have two cell types : mother cells and differentiated cells. | ||
+ | <h4>Random initial position</h4> | ||
+ | The input array must contain four integer values in this order. | ||
+ | <ul> | ||
+ | <li>\(MC_0\) : initial number of mother cells in the medium.</li> | ||
+ | <li>\(DC_0\) : initial number of differentiated cells in the medium.</li> | ||
+ | <li>\(sizeMatCell\) : cells box size (in pixels).</li> | ||
+ | <li>\(sizeMat\) : real box size (in pixels).</li> | ||
+ | </ul> | ||
+ | <br /> | ||
+ | Warning : \(sizeMatCell\) must be larger than \(sizeMat\). | ||
+ | <br /> | ||
+ | <br /> | ||
+ | |||
+ | In the program, the input variable has the following pattern. | ||
+ | <br /> | ||
+ | \(input = [MC_0, DC_0, sizeMatCell, sizeMat]\) | ||
+ | <br /> | ||
+ | <br /> | ||
+ | Here is an example. | ||
+ | <br /> | ||
+ | <ul> | ||
+ | <li>\(MC_0 = 5 \phantom{t} (cells)\)</li> | ||
+ | <li>\(DC_0 = 0 \phantom{t} (cells)\)</li> | ||
+ | <li>\(sizeMatCell = 100 \phantom{t} (pixels)\)</li> | ||
+ | <li>\(sizeMat = 250 \phantom{t} (pixels)\)</li> | ||
+ | </ul> | ||
+ | |||
+ | <h4>Predetermined initial position</h4> | ||
+ | In order to make an easy predetermined initial position input, we wrote a code that understands images. | ||
+ | <br /> | ||
+ | The input must contain the image path. | ||
+ | <br /> | ||
+ | It is very easy to design a custom image <i>i.e.</i> a custom spatial cell distribution. You must follow these four rules (we work only with the image red component) | ||
+ | <ul> | ||
+ | <li>the image must be square and in jpeg format.</li> | ||
+ | <li>255 means no cell.</li> | ||
+ | <li>128 means one differentiated cell.</li> | ||
+ | <li>0 means one mother cell.</li> | ||
+ | </ul> | ||
+ | 0, 128 and 255 are red components of any colours that you want because the MATLAB code take into account only the image red component. | ||
+ | <br /> | ||
+ | If you want, you can use the following hexadecimal colors codes. | ||
+ | <ul> | ||
+ | <li>#FFFFFF (white) means no cell.</li> | ||
+ | <li>#800000 (red) means one differentiated cell.</li> | ||
+ | <li>#000000 (black) means one mother cell.</li> | ||
+ | </ul> | ||
+ | <br /> | ||
+ | Here is an example only with mother cells. | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <img src="https://static.igem.org/mediawiki/2015/9/9a/IgemImg.png" style="width:40%;height:40%;" alt="Example of predetermined cells initial position with mother cells" title="Example of predetermined cells initial position with mother cells" > | ||
+ | <p><b>Figure 9 :</b> Example of predetermined cells initial position with mother cells.</p> | ||
+ | <br /> | ||
+ | Here is another example with mother cells (black) and differentiated cells (red). | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <img src="https://static.igem.org/mediawiki/2015/a/a4/IgemParisBettencourtImg.png" style="width:40%;height:40%;" alt="Example of predetermined cells initial position with mother cells (black) and differentiated cells (red)" title="Example of predetermined cells initial position with mother cells (black) and differentiated cells (red)" > | ||
+ | <p><b>Figure 10 :</b> Example of predetermined cells initial position with mother cells (black) and differentiated cells (red).</p> | ||
+ | <br /> | ||
+ | |||
+ | <h3>Rate constants</h3> | ||
+ | You have to define seven variables. | ||
+ | <ul> | ||
+ | <li>\(\mu_{1}\) : mother cell differentiation time mean.</li> | ||
+ | <li>\(\sigma_{1}\) : mother cell differentiation time standard deviation.</li> | ||
+ | <li>\(\mu_{2}\) : mother cell doubling time mean.</li> | ||
+ | <li>\(\sigma_{2}\) : mother cell doubling time standard deviation.</li> | ||
+ | <li>\(\mu_{3}\) : differentiated cell doubling time mean.</li> | ||
+ | <li>\(\sigma_{3}\) : differentiated cell doubling time standard deviation.</li> | ||
+ | <li>\(k_{4}\) : rate constant of the differentiated cell vitamin production.</li> | ||
+ | </ul> | ||
+ | <br /> | ||
+ | In the program, the rate constants variable has the following pattern. | ||
+ | <br /> | ||
+ | \(constantRate = [\mu_{1}, \sigma_{1}, \mu_{2}, \sigma_{2}, \mu_{3}, \sigma_{3}, k_{4}]\) | ||
+ | <br /> | ||
+ | <br /> | ||
+ | Here is an example. | ||
+ | <br /> | ||
+ | <ul> | ||
+ | <li>\(\mu_{1} = 1 \phantom{t} (hours)\)</li> | ||
+ | <li>\(\sigma_{1} = 0.1 \phantom{t} (hours)\)</li> | ||
+ | <li>\(\mu_{2} = 1.0502 \phantom{t} (hours)\)</li> | ||
+ | <li>\(\sigma_{2} = 0.1 \phantom{t} (hours)\)</li> | ||
+ | <li>\(\mu_{3} = 2.1004 \phantom{t} (hours)\)</li> | ||
+ | <li>\(\sigma_{3} = 0.1 \phantom{t} (hours)\)</li> | ||
+ | <li>\(k_{4} = 1 \phantom{t} (hours^{-1})\)</li> | ||
+ | </ul> | ||
+ | |||
+ | <h3>Fermentation period</h3> | ||
+ | The fermentation period \(t\) is a simple scalar variable. | ||
+ | <br /> | ||
+ | You can use \(t = 5 \phantom{t} (hours)\) for example. | ||
+ | <h3>Action</h3> | ||
+ | In order to choose what you want to do, you must define three Boolean variables. | ||
+ | <ul> | ||
+ | <li>\(createFolder\) : create a folder in the disk to save information.</li> | ||
+ | <li>\(showAnimation\) : show the cell population animation. Warning : requires a lot of computing power.</li> | ||
+ | <li>\(plotGraph\) : plot the results in graphs.</li> | ||
+ | </ul> | ||
+ | |||
+ | <br /> | ||
+ | In the program, the action variable has the following pattern. | ||
+ | <br /> | ||
+ | \(action = [createFolder, showAnimation, plotGraph\)] | ||
+ | <br /> | ||
+ | <br /> | ||
+ | In the following example we want to create a folder and plot the graphs. | ||
+ | <br /> | ||
+ | <ul> | ||
+ | <li>\(createFolder = 1\)</li> | ||
+ | <li>\(showAnimation = 0\)</li> | ||
+ | <li>\(plotGraph = 1\)</li> | ||
+ | </ul> | ||
+ | <br /> | ||
+ | In the following example we want to show the cell animation. | ||
+ | <br /> | ||
+ | <ul> | ||
+ | <li>\(createFolder = 0\)</li> | ||
+ | <li>\(showAnimation = 1\)</li> | ||
+ | <li>\(plotGraph = 0\)</li> | ||
+ | </ul> | ||
+ | <br /> | ||
+ | In the following example we want to show the cell animation and save the images in a folder. | ||
+ | <br /> | ||
+ | With the images you can create gif animations. | ||
+ | <br /> | ||
+ | <ul> | ||
+ | <li>\(createFolder = 1\)</li> | ||
+ | <li>\(showAnimation = 1\)</li> | ||
+ | <li>\(plotGraph = 0\)</li> | ||
+ | </ul> | ||
+ | |||
+ | <h3>Folder name</h3> | ||
+ | The \(folderName\) variable is a string containing the folder name where results folder are stored in the disk. | ||
+ | <br /> | ||
+ | You can use \(folderName =\) '\(Results\)' for example. | ||
+ | |||
+ | <h2>Output</h2> | ||
+ | Four types of output are generated. | ||
+ | <ul> | ||
+ | <li>raw data : all the useful information.</li> | ||
+ | <li>folder creation : if chosen in the \(action\) variable a folder is created.</li> | ||
+ | <li>graphs : if chosen in the \(action\) variable graphs are generated.</li> | ||
+ | <li>animation : if chosen in the \(action\) variable cell animation is generated.</li> | ||
+ | </ul> | ||
+ | |||
+ | <h3>Raw data</h3> | ||
+ | <ul> | ||
+ | <li>\(mainTic\) : start of the program.</li> | ||
+ | <li>\(MC_0\) : initial number of mother cells in the medium.</li> | ||
+ | <li>\(DC_0\) : initial number of differentiated cells in the medium.</li> | ||
+ | <li>\(pasDistributionTimeEvent\) : resolution for the graph time event distribution plot (see the \(initVariables\) function).</li> | ||
+ | <li>\(frameRate\) : animation frame rate (see the \(initVariables\) function).</li> | ||
+ | <li>\(timeShowPopulation\) : simulation time between two animations (see the \(initVariables\) function).</li> | ||
+ | <li>\(simulationTime\) : fermentation period \(t\).</li> | ||
+ | <li>\(resultFolderName\) : folder where the results folder are created.</li> | ||
+ | <li>\(\mu_{1}\) : mother cell differentiation time mean.</li> | ||
+ | <li>\(\sigma_{1}\) : mother cell differentiation time standard deviation.</li> | ||
+ | <li>\(\mu_{2}\) : mother cell doubling time mean.</li> | ||
+ | <li>\(\sigma_{2}\) : mother cell doubling time standard deviation.</li> | ||
+ | <li>\(\mu_{3}\) : differentiated cell doubling time mean.</li> | ||
+ | <li>\(\sigma_{3}\) : differentiated cell doubling time standard deviation.</li> | ||
+ | <li>\(k_{4}\) : rate constant of the differentiated cell vitamin production.</li> | ||
+ | <li>\(cVitamin\) : vitamin counter.</li> | ||
+ | <li>\(time\) : main timer containing the simulation time.</li> | ||
+ | <li>\(createFolder\) : action boolean.</li> | ||
+ | <li>\(showPopulationBool\) : action boolean.</li> | ||
+ | <li>\(plotGraph\) : action boolean.</li> | ||
+ | <li>\(input\) : input array.</li> | ||
+ | <li>\(cTime1\) : time distribution counter 1 (see the \(randEvent\) function).</li> | ||
+ | <li>\(cTime2\) : time distribution counter 2 (see the \(randEvent\) function).</li> | ||
+ | <li>\(cTime3\) : time distribution counter 3 (see the \(randEvent\) function).</li> | ||
+ | <li>\(counterEvent\) : event counter.</li> | ||
+ | <li>\(timerShow\) : time animation counter.</li> | ||
+ | <li>\(sizeMat\) : real box size (in pixels).</li> | ||
+ | <li>\(nextEvent\) : next event type.</li> | ||
+ | <li>\(time1Array\) : time distribution array 1 (see the \(initTimeEvent\) function).</li> | ||
+ | <li>\(time2Array\) : time distribution array 2 (see the \(initTimeEvent\) function).</li> | ||
+ | <li>\(time3Array\) : time distribution array 3 (see the \(initTimeEvent\) function).</li> | ||
+ | <li>\(cell\) : structure containing all the cells' information.</li> | ||
+ | <li>\(sizeMatCell\) : cells box size (in pixels).</li> | ||
+ | <li>\(timeNextEvent\) : time before the next event.</li> | ||
+ | <li>\(saveTime\) : array containing the simulation time evolution.</li> | ||
+ | <li>\(saveNbrMC\) : array containing the mother cells time evolution.</li> | ||
+ | <li>\(saveNbrDC\) : array containing the differentiated cells time evolution.</li> | ||
+ | <li>\(saveNbrVitamin\) : array containing the vitamin time evolution.</li> | ||
+ | <li>\(folderName\) : folder where the results are stored. The pattern is the following : \(resultFolderName/DD-MM-YY\_hh\_mm\_ss\_mss\).</li> | ||
+ | <li>\(imgType\) : image type (see the \(initialization\) function).</li> | ||
+ | <li>\(parametersFileName\) : parameters file name where the parameters are saved (see the \(initialization\) function).</li> | ||
+ | <li>\(parametersDoc\) : file object where the parameters are saved.</li> | ||
+ | <li>\(maxMC\) : maximum number of mother cells.</li> | ||
+ | <li>\(maxDC\) : maximum number of differentiated cells.</li> | ||
+ | <li>\(maxVitamin\) : maximum number of vitamins.</li> | ||
+ | <li>\(timeSpent\) : computation time (in seconds).</li> | ||
+ | |||
+ | </ul> | ||
+ | <h3>Folder creation</h3> | ||
+ | If the \(action\) variable \(createFolder\) is set, the program will save important results in this folder. | ||
+ | <br /> | ||
+ | <ul> | ||
+ | <li>\(parameters.txt\) : text file containing different simulation parameters and results.</li> | ||
+ | <li>\(data.mat\) : MATLAB file containing the raw data structure. To load the file, use this formula : \(load('data.mat')\).</li> | ||
+ | </ul> | ||
+ | |||
+ | <h3>Graphs</h3> | ||
+ | If the \(action\) variable \(plotGraph\) is set, the program will show the graphs. | ||
+ | <br /> | ||
+ | Moreover, if the \(action\) variable \(createFolder\) is set, the program will save the graphs in the folder. | ||
+ | |||
+ | <h3>Animation</h3> | ||
+ | If the \(action\) variable \(showAnimation\) is set, the program will show the cell animation. | ||
+ | <br /> | ||
+ | Moreover, if the \(action\) variable \(createFolder\) is set, the program will save the images in the folder. | ||
+ | |||
+ | <h2>Examples</h2> | ||
+ | We present here some results obtained with the program. For more details about the model sees the modeling section. | ||
+ | |||
+ | <h3>Time evolution of mother cells, differentiated cells and vitamin</h3> | ||
+ | <h4>Graphs</h4> | ||
+ | As explained in the modeling section the program give these results. | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <img width="100%" src="https://static.igem.org/mediawiki/2015/1/14/StochasticEvolution.png" title="Stochastic evolution of the system" alt="Stochastic evolution of the system" style="align:center;"> | ||
+ | <p style="text-align:center"><b>Figure 11 :</b> Stochastic evolution of the system.</p> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <img width="100%" src="https://static.igem.org/mediawiki/2015/0/0b/OptimizeK1Stochastic.png" title="Stochastic vitamin optimization" alt="Stochastic vitamin optimization" style="align:center;"> | ||
+ | <p style="text-align:center"><b>Figure 12 :</b> Stochastic vitamin optimization.</p> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <img width="100%" src="https://static.igem.org/mediawiki/2015/9/97/StochasticEventTimeProbabilityDistribution.png" title="Distribution of event time probability" alt="Distribution of event time probability" style="align:center;"> | ||
+ | <p style="text-align:center"><b>Figure 13 :</b> Distribution of event time probability.</p> | ||
+ | |||
+ | <h4>Animation</h4> | ||
+ | Here is an example with mother cells (black) and differentiated cells (red). | ||
+ | <br /> | ||
+ | This image is the cell input. | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <img style="width:40%;height:40%;" src="https://static.igem.org/mediawiki/2015/a/a4/IgemParisBettencourtImg.png" alt="Example of predetermined cells initial position with mother cells (black) and differentiated cells (red)" title="Example of predetermined cells initial position with mother cells (black) and differentiated cells (red)" > | ||
+ | <p><b>Figure 14 :</b> Example of predetermined cells initial position with mother cells (black) and differentiated cells (red).</p> | ||
+ | <br /> | ||
+ | The result is the following animation after a conversion in a gif file. | ||
+ | <br /> | ||
+ | The mother cells are in orange and the differentiated cells are in yellow. | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <img style="width:40%;height:40%;" src="https://static.igem.org/mediawiki/2015/7/73/IgemParisBettencourtGif.gif" alt="Animation example with predetermined cells initial position with mother cells and differentiated cells" title="Animation example with predetermined cells initial position with mother cells and differentiated cells" > | ||
+ | <p><b>Figure 15 :</b> Animation example with predetermined cells initial position with mother cells and differentiated cells.</p> | ||
+ | <br /> | ||
+ | |||
+ | <h3>Vitamin optimization</h3> | ||
+ | This program is designed to maximize the vitamin production. Here are some results. | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <img width="100%" src="https://static.igem.org/mediawiki/2015/0/0b/OptimizeK1Stochastic.png" title="Stochastic vitamin optimization" alt="Stochastic vitamin optimization" style="align:center;"> | ||
+ | <p style="text-align:center"><b>Figure 16 :</b> Stochastic vitamin optimization.</p> | ||
+ | |||
+ | <h3>Deterministic and stochastic vitamin optimization comparison</h3> | ||
+ | Here is a comparison between the two models. | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <img width="100%" src="https://static.igem.org/mediawiki/2015/3/3c/CompareStochasticAndDeterministic.png" title="Comparison of deterministic and stochastic vitamin optimization" alt="Comparison of deterministic and stochastic vitamin optimization" style="align:center;"> | ||
+ | <p style="text-align:center"><b>Figure 17 :</b> Comparison of deterministic and stochastic vitamin optimization.</p> | ||
+ | |||
+ | <h2>Conclusion</h2> | ||
+ | Feel free to use and modify this program. The source code is available on <a href="https://github.com/iGEMParisBettencourt2015/modeling" title="Source code in GitHub"> GitHub : iGEM Paris Bettencourt 2015</a> under the <a href="http://www.gnu.org/licenses/gpl.txt" alt="GNU General Public License" >GNU General Public License version 3.0</a>. | ||
+ | For more information concerning the model see the modeling section. | ||
+ | |||
+ | <h2>Bibliography</h2> | ||
<ul> | <ul> | ||
<li>Gillespie, D.T. A general method for numerically simulating the stochastic time evolution of coupled chemical reactions. <i>Journal of Computational Physics</i> <b>22</b>, 403-434 (1976).</li> | <li>Gillespie, D.T. A general method for numerically simulating the stochastic time evolution of coupled chemical reactions. <i>Journal of Computational Physics</i> <b>22</b>, 403-434 (1976).</li> | ||
Line 457: | Line 787: | ||
</ul> | </ul> | ||
+ | |||
</html> | </html> | ||
{{Paris_Bettencourt/footer}} | {{Paris_Bettencourt/footer}} |
Revision as of 19:39, 18 September 2015