|
|
(20 intermediate revisions not shown) |
Line 9: |
Line 9: |
| | | |
| <!-- Insert content here --> | | <!-- Insert content here --> |
| + | |
| + | =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?= |
| + | [[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). |
| | | |
| <html> | | <html> |
Line 30: |
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 38: |
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 55: |
Line 89: |
| </label> | | </label> |
| </span> | | </span> |
- | <input class="span12" 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 65: |
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 80: |
Line 114: |
| </label> | | </label> |
| </span> | | </span> |
- | <input class="span12" 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 90: |
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 108: |
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 123: |
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 152: |
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> |