Team:EPF-Lausanne/Modeling/BioreactorSim

From 2012.igem.org

(Difference between revisions)
(How?)
 
(17 intermediate revisions not shown)
Line 10: Line 10:
<!-- Insert content here -->
<!-- Insert content here -->
-
We chose to represent the bioreactor as an infinitely long cylinder. This allows us to consider the problem in two dimensions, yet should stay realistic (the bioreactor will normally be at least twice longer than its radius, this model should quite accurately represent what's happening in the middle). From literature [cite!], we know that LovTAP saturates at 200W/cm^2 (note: lower intensities should still work, as saturation isn't necessary, we just want a significant proportion to be activated, but this should keep things easier to calculate).
+
=Why?=
 +
Once we are ready to build a bigger bioreactor, we want to be sure that the irradiance we apply to the cells is enough to activate LovTAP-VP16 but not higher, to avoid damage to the cells.  
 +
* Can we know this value for a given bioreactor size and lighting setup?
-
The results are displaed in a picture at the bottom of the page. Everything that is dark red is fully saturated, but everything between red and green should be enough. The places where the picture is blue represent parts that aren't illuminated enough. However, as the activated LOV-domain has a half-life of 30-40s (and our protein's half-life should be quite close to this), and the bioreactor is orbitally shaken (which results in chaotic movement, meaning every cell has a quasi-uniform probability of coming anywhere in the bioreactor), the only thing that matters is that the coverage is high enough (note: high enough depends on several parameters such as the shaker speed).
+
=What?=
 +
We have written a raytracing algorithm, both in MATLAB and JavaScript. Knowing the characteristics of our light source and the absorbance spectrum of the cell culture, we can get, as we show, a good approximation of the irradiance in the whole bioreactor just applying the Beer-Lambert Law.
 +
 
 +
=How?=
 +
[[File:Team-EPF-Lausanne_reactor_60.jpg|Example of irradiance map|thumb]]
 +
 
 +
[[File:Team-EPF-Lausanne_bioreactor_lines.jpg|Assuming laminar flow, the cells at a particular layer in the flow will see this irradiance pattern. Using our other modelling tools we can predict the amount of LovTAP-VP16 in them that will be active.|thumb]]
 +
 
 +
We chose to represent the bioreactor as an infinitely long cylinder. This allows us to consider the problem in two dimensions, yet should stay realistic (the bioreactor will normally be at least two-times longer than its radius, so this model should quite accurately represent what's happening in the middle). From literature ([[Team:EPF-Lausanne/References#Strickland_2008|Strickland 2008]]), we know that LovTAP saturates at 20 mW/cm² (note: lower intensities should still work, as saturation isn't necessary, we just want a significant proportion to be activated, but this should keep things easier to calculate).
 +
 
 +
The results are displayed in a picture at the bottom of the page. Everything that is dark red is fully saturated, but everything between red and green should be enough. The places where the picture is blue represents parts that aren't illuminated enough. However, as the activated LOV-domain has a half-life of 30-40s (and our protein's half-life should be quite close to this), and the bioreactor is operating as an orbital shaker (which results in chaotic movement, meaning every cell has a quasi-uniform probability of going anywhere in the bioreactor), the only thing that matters is that the coverage is high enough (note: "high enough" depends on several parameters, such as the shaker speed).
 +
 
 +
==Parameters==
 +
The parameters we have used for the cell culture absorbance have been extracted from the measurements that can be found in this file: [[File:Team-EPF-Lausanne-cell-culture-absorbance-nanodrop.pdf]].
 +
 
 +
The simulation was built around the Beer Lambert law for absorbance of a solution.
 +
[[File:Team-EPF-Lausanne_beer_lambert.png]]
 +
 
 +
==Validation==
 +
[[File:Team-EPF-Lausanne_validate.jpg|Comparison of the analytical solution to the one given by our raytrace model. They fit perfecly.|thumb]]
 +
 
 +
We have solved a geometrically simple setup: just an onmidirectional light in the center and no reflexions. Then we could compare it to the analytical solution.
 +
 
 +
==Code==
 +
 
 +
Here the MATLAB code we have used for this section:
 +
[[File:Team-EPF-Lausanne_bioreactor_matlab.zip|bioreactor.zip]].
Please play with our tool! (If you're unsure about the settings, just click run to use sane defaults).
Please play with our tool! (If you're unsure about the settings, just click run to use sane defaults).
Line 36: Line 64:
  <label class="control-label" for="radius">Bioreactor Radius</label>
  <label class="control-label" for="radius">Bioreactor Radius</label>
  <div class="controls">
  <div class="controls">
-
<input placeholder="Radius in meters" class="input-xlarge" type="text" id="radius">
+
<input placeholder="Radius in meters (0.5)" class="input-xlarge" type="text" id="radius">
<p class="help-block">This defines the size of the bioreactor. This can be anything from a few centimeters to a few meters (depends on the production scale).</p>
<p class="help-block">This defines the size of the bioreactor. This can be anything from a few centimeters to a few meters (depends on the production scale).</p>
  </div>
  </div>
Line 44: Line 72:
  <!-- Text input-->
  <!-- Text input-->
-
  <label class="control-label" for="power">Light power</label>
+
  <label class="control-label" for="power">Total Light power</label>
  <div class="controls">
  <div class="controls">
-
<input placeholder="The power of the lights in W/m" class="input-xlarge" type="text" id="power">
+
<input placeholder="The power of the lights in W/m (120)" class="input-xlarge" type="text" id="power">
-
<p class="help-block">As the model of the bioreactor is an infinite cylinder with infinite lighting strips, the light intensity needs of each strip needs to be defined in Watts per meter. A sample value is 10 Watts (a strip of normal LEDs)</p>
+
<p class="help-block">As the model of the bioreactor is an infinite cylinder with infinite lighting strips, the light intensity needs of all strip needs to be defined in Watts per meter. This power will be uniformly distributed among the lights.</p>
  </div>
  </div>
</div>
</div>
Line 61: Line 89:
</label>
</label>
  </span>
  </span>
-
  <input class="span10" placeholder="Reflectivity" id="reflectiveAmount" type="text">
+
  <input class="span8" placeholder="Reflectivity (0.9)" id="reflectiveAmount" type="text">
</div>
</div>
<p class="help-block">The bioreactor can have reflective walls which will keep more of the light inside of the bioreactor. Typical values for the frequencies we're working with are 0.9 (for aluminium and silver) and 0.4 (for gold)</p>
<p class="help-block">The bioreactor can have reflective walls which will keep more of the light inside of the bioreactor. Typical values for the frequencies we're working with are 0.9 (for aluminium and silver) and 0.4 (for gold)</p>
Line 71: Line 99:
  <label class="control-label" for="absorbance">Absorbance</label>
  <label class="control-label" for="absorbance">Absorbance</label>
  <div class="controls">
  <div class="controls">
-
<input placeholder="Absorbance of 1mm of culture" class="input-xlarge" type="text" id="absorbance">
+
<input placeholder="Absorbance of 1mm of culture (0.01)" class="input-xlarge" type="text" id="absorbance">
<p class="help-block">This value determines how much of the light is absorbed by the culture. Typical values can range from 0.01-0.04.</p>
<p class="help-block">This value determines how much of the light is absorbed by the culture. Typical values can range from 0.01-0.04.</p>
  </div>
  </div>
-
</div><div class="control-group">
+
</div>
<div class="control-group">
<div class="control-group">
Line 86: Line 114:
</label>
</label>
  </span>
  </span>
-
  <input class="span10" placeholder="Light Angle (in degrees)" id="lightAngle" type="text">
+
  <input class="span8" placeholder="Light Angle (in degrees) (20)" id="lightAngle" type="text">
</div>
</div>
<p class="help-block">The lights can be uniform (same amount of light in all directions) or directed (light will come out of in a small angle).</p>
<p class="help-block">The lights can be uniform (same amount of light in all directions) or directed (light will come out of in a small angle).</p>
Line 96: Line 124:
  <label class="control-label" for="rays">Rays per Lightsource</label>
  <label class="control-label" for="rays">Rays per Lightsource</label>
  <div class="controls">
  <div class="controls">
-
<input placeholder="The amount of rays shot per light (100)" class="input-xlarge" type="text" id="rays">
+
<input placeholder="The amount of rays shot per light (50)" class="input-xlarge" type="text" id="rays">
<p class="help-block">This simulator works by shooting rays out of each light source. The more rays are used, the longer the simulation will take, but the better the result will be.</p>
<p class="help-block">This simulator works by shooting rays out of each light source. The more rays are used, the longer the simulation will take, but the better the result will be.</p>
  </div>
  </div>
Line 114: Line 142:
  <label class="control-label" for="nLights">Number of Lights</label>
  <label class="control-label" for="nLights">Number of Lights</label>
  <div class="controls">
  <div class="controls">
-
<input placeholder="The number of lights (4)" class="input-xlarge" type="text" id="nLights">
+
<input placeholder="The number of lights (16)" class="input-xlarge" type="text" id="nLights">
<p class="help-block">Number of Lights in the system. The more lights, the better and the more uniform the lighting. Will increase the computation time.</p>
<p class="help-block">Number of Lights in the system. The more lights, the better and the more uniform the lighting. Will increase the computation time.</p>
 +
  </div>
 +
</div>
 +
 +
<div class="control-group">
 +
  <!-- Text input-->
 +
  <label class="control-label" for="nRings">Number of Rings</label>
 +
  <div class="controls">
 +
<input placeholder="The number of rings (2)" class="input-xlarge" type="text" id="nRings">
 +
<p class="help-block">Number of rings of Lights in the system. This just changes the distribution of the lights.</p>
  </div>
  </div>
</div>
</div>
<div class="control-group" id="runButtonWrapper">
<div class="control-group" id="runButtonWrapper">
-
  <label class="control-label"></label>
+
  <label class="control-label"> </label>
  <!-- Button -->
  <!-- Button -->
Line 129: Line 166:
<div class="control-group" id="cancelButtonWrapper" style="display: none;">
<div class="control-group" id="cancelButtonWrapper" style="display: none;">
-
  <label class="control-label"></label>
+
  <label class="control-label"> </label>
  <!-- Button -->
  <!-- Button -->
Line 158: Line 195:
  <label class="control-label">Image</label>
  <label class="control-label">Image</label>
  <div class="controls">
  <div class="controls">
-
             <canvas width="400" height="400" id="output"></canvas>
+
             <canvas width="400" height="400" id="output"> </canvas>
             <div class="help-block">Shows the light intensity in a slice of the bioreactor. This image uses the jet colormap. Red = saturated, green = partially saturated, blue = low/no lighting.</div>
             <div class="help-block">Shows the light intensity in a slice of the bioreactor. This image uses the jet colormap. Red = saturated, green = partially saturated, blue = low/no lighting.</div>
  </div>
  </div>

Latest revision as of 04:00, 27 September 2012


Contents

Why?

Once we are ready to build a bigger bioreactor, we want to be sure that the irradiance we apply to the cells is enough to activate LovTAP-VP16 but not higher, to avoid damage to the cells.

  • Can we know this value for a given bioreactor size and lighting setup?

What?

We have written a raytracing algorithm, both in MATLAB and JavaScript. Knowing the characteristics of our light source and the absorbance spectrum of the cell culture, we can get, as we show, a good approximation of the irradiance in the whole bioreactor just applying the Beer-Lambert Law.

How?

Example of irradiance map
Assuming laminar flow, the cells at a particular layer in the flow will see this irradiance pattern. Using our other modelling tools we can predict the amount of LovTAP-VP16 in them that will be active.

We chose to represent the bioreactor as an infinitely long cylinder. This allows us to consider the problem in two dimensions, yet should stay realistic (the bioreactor will normally be at least two-times longer than its radius, so this model should quite accurately represent what's happening in the middle). From literature (Strickland 2008), we know that LovTAP saturates at 20 mW/cm² (note: lower intensities should still work, as saturation isn't necessary, we just want a significant proportion to be activated, but this should keep things easier to calculate).

The results are displayed in a picture at the bottom of the page. Everything that is dark red is fully saturated, but everything between red and green should be enough. The places where the picture is blue represents parts that aren't illuminated enough. However, as the activated LOV-domain has a half-life of 30-40s (and our protein's half-life should be quite close to this), and the bioreactor is operating as an orbital shaker (which results in chaotic movement, meaning every cell has a quasi-uniform probability of going anywhere in the bioreactor), the only thing that matters is that the coverage is high enough (note: "high enough" depends on several parameters, such as the shaker speed).

Parameters

The parameters we have used for the cell culture absorbance have been extracted from the measurements that can be found in this file: File:Team-EPF-Lausanne-cell-culture-absorbance-nanodrop.pdf.

The simulation was built around the Beer Lambert law for absorbance of a solution. Team-EPF-Lausanne beer lambert.png

Validation

Comparison of the analytical solution to the one given by our raytrace model. They fit perfecly.

We have solved a geometrically simple setup: just an onmidirectional light in the center and no reflexions. Then we could compare it to the analytical solution.

Code

Here the MATLAB code we have used for this section: File:Team-EPF-Lausanne bioreactor matlab.zip.

Please play with our tool! (If you're unsure about the settings, just click run to use sane defaults).

This page uses Web Workers to avoid freezing the page while performing its calculations. Please update your browser to use this simulator.
Please check if all values in the forms are correct (all fields are filled, numbers are numbers, etc...).
Bioreactor Lighting Simulator

This defines the size of the bioreactor. This can be anything from a few centimeters to a few meters (depends on the production scale).

As the model of the bioreactor is an infinite cylinder with infinite lighting strips, the light intensity needs of all strip needs to be defined in Watts per meter. This power will be uniformly distributed among the lights.

The bioreactor can have reflective walls which will keep more of the light inside of the bioreactor. Typical values for the frequencies we're working with are 0.9 (for aluminium and silver) and 0.4 (for gold)

This value determines how much of the light is absorbed by the culture. Typical values can range from 0.01-0.04.

The lights can be uniform (same amount of light in all directions) or directed (light will come out of in a small angle).

This simulator works by shooting rays out of each light source. The more rays are used, the longer the simulation will take, but the better the result will be.

Resolution of the simulation. Higher resolutions need more rays per lightsource to be accurate.

Number of Lights in the system. The more lights, the better and the more uniform the lighting. Will increase the computation time.

Number of rings of Lights in the system. This just changes the distribution of the lights.

Results
?%
Shows the light intensity in a slice of the bioreactor. This image uses the jet colormap. Red = saturated, green = partially saturated, blue = low/no lighting.
At any point in time, ?% of the cells are saturated in light (as the cells are shaken around the orbital shaker and the LOV domain has a long half-time, they don't need to be constantly saturated).
?% of the light was lost (absorbed by the walls or escaped through a transparent wall).