Difference between revisions of "Team:Marburg/Measurement"

Line 35: Line 35:
 
<i>
 
<i>
 
</style>
 
</style>
 
<p>
 
 
<i>Measure what is measurable, and make measurable what is not so.</i>
 
<br>
 
                          <b>  -- Galileo Galilei</b>
 
<br>
 
<br>
 
</p>
 
 
 
 
 
 
Highly characterized parts are an absolute prerequisite for synthetic biology to enable rational design of DNA constructs. While thousands of parts were analyzed for <i>E. coli</i>, no such data is available for <i>V. natriegens </i>making design of plasmids a guessing game. <br>To tackle this foundational challenge for our chassis, we established a measurement and data analyzation workflow tailored to its unmatched growth rate. Initially, we carefully examined the plasmidal context yielding the highest dynamic range in reporter experiments and concluded superior performance when utilizing the <i>lux</i> operon and ColE1. Subsequently, we applied this protocol to obtain reproducible data for promoter strengths - including inducible promoters, - insulation by our connectors and expression influence of different oris. qPCR experiments provided additional insights into plasmid copy number dependent on reporter expression. We are certain that our data, in combination with our Marburg Collection, will foster the widespread utilization of <i>V. natriegens</i> in synthetic biology.<br><br>
 
This page focuses on developing an experimental and data analysis workflow for all experiments that were performed with a platereader. The characterization of promoters, RBS, terminators and our connectors, can be found in the respective section on the result page.<br>
 
In addition to platereader experiments, we also used methods (e.g. qPCR) to additionally support our measured data.
 
<a href="https://2018.igem.org/Team:Marburg/Results">(Link to Results)</a>.
 
 
 
<div class="collapsible">
 
    <div class="btn_expand">Experimental approach</div>
 
    <div class="content">
 
      <p>
 
 
Most of our data were obtained by measuring the expression of reporters in platereader experiments. In the first attempts, we failed to obtain reproducible data by applying workflows that are commonly used for<i> E. coli</i>. We realized that a new chassis requires overthinking existing procedures and we decided to establish a workflow for platereader experiments tailored to <i>V. natriegens</i> which respects species specific properties, primarily its unbeaten doubling time.<br><br>
 
 
<div class="skipTarget" skipname="Experimental workflow "></div>
 
Many platereader workflows for <i>E. coli</i> start with growing overnight cultures of certain samples, measuring the OD<sub>600</sub> and dilute all samples in a 96 well plate to a defined OD<sub>600</sub> (e.g. 0.05). Depending on the number of samples, pipetting the test plate can easily take up to 45 minutes.<br>
 
When first following this approach with<i> V. natriegens</i>, we realized that a different workflow is needed for  the worlds fastest growing organism. We tested how much<i> V. natriegens</i> grows during the preparation of a full 96 well plate. We set up an experiment using a stationary culture of<i> V. natriegens</i> with a plasmid weakly expressing <i>lux</i>  - to achieve realistic conditions - and diluted this culture 1 : 100 in a 96 well plate with one pipetting step taking 30 seconds. The result of this experiment can be seen in figure 1 A. <br>
 
The data show an obvious trend towards higher OD<sub>600</sub> for wells that were pipetted first. Seemingly, <i>V. natriegens</i> is able to recover from stationary phase and undergo almost one cell division in 45 minutes at room temperature. Please note that performing this experiment with a culture in the exponential phase, as described in some <i>E. coli</i> protocols, would most likely result in an even stronger trend.<br>
 
With this in mind, we managed to establish a workflow that omits measuring and independently diluting individual wells. <br>
 
We tested to cultivate our precultures - inoculated from glycerol stocks - directly in 96 well plates and incubated this plate for five to six hours in a platereader or shaking incubator. For <i>V. natriegens</i>, this time frame is sufficient for all cultures to reliably reach stationary phase which equals an overnight culture for <i>E. coli</i>. The cultures are then diluted in two steps: 1:50 and 1:40, finally resulting in a 1:2000 dilution of the preculture. Compared to the commonly used workflows for <i>E. coli</i>, our approach does not consider the OD<sub>600</sub> of individual wells but instead dilutes all cultures by the same factor.<br>
 
The OD<sub>600</sub> after 1:50 dilution of the 96 well plate is shown in figure 1 B. Despite not calculating dilutions for individual wells, the range of values is explicitly smaller and additionally no positional bias can be observed.<br>
 
<figure>
 
 
<div class="imageContainer1x2">
 
 
   
 
    <div><img src="https://static.igem.org/mediawiki/2018/e/e2/T--Marburg--Pipetting_Vibrio.png">A</div>
 
    <div><img src="https://static.igem.org/mediawiki/2018/9/98/T--Marburg--Pipetting_Coli.png">B</div>
 
 
</div>
 
 
<figcaption>
 
 
            <figcaption><b>Figure 1: <br> Heterogeneity of 96 well plate after preparation</b> <br> A) One pipetting step each 30 s, starting with A1 <br> B) Intermediate dilution (1:50) of a preculture
 
 
    </figure>
 
 
Moreover, we realized that inoculating with a low cell number is advantageous when working with<i> V. natriegens</i>.  This prolongs the exponential phase, the period in which most relevant data are acquired. A 1:2000 dilution results in a cell density much lower than the inoculum used in most <i> E. coli</i> experiments.The subsequent, kinetic measurement can be completed in as less as five to six hours.
 
</p>   
 
    </div>
 
  </div>
 
<div class="skipTarget" skipname="Data analysis workflow"></div>
 
<div class="collapsible">
 
    <div class="btn_expand">Data analyisis</div>
 
    <div class="content">
 
      <p>
 
<figure style="width: 50%; float: right">
 
        <img src="https://static.igem.org/mediawiki/2018/2/28/T--Marburg--Steady_state.png">
 
        <figcaption><b> Figure 2: Steady state level with constant degradation and production rates  </b> <br> The black horizontal line represents a constant production rate and the green curve indicates the degradation rate depending on the concentration
 
        </figcaption>
 
    </figure>
 
 
Besides the experimental workflow, we established an approach for fast and accurate data analysis. From a mathematical point of view, constant production and constant degradation rates result in a steady state level of a molecule. This is visualized in figure 2. While the absolute degradation increases depending on the concentration of a molecule (e.g. a reporter protein), synthesis from a constitutive promoter remains constant, independent of the concentration.
 
In the context of our reporter experiments, the concentration represents the number of reporter per cell. The intersection of both graphs yield the steady state concentration because degradation and synthesis rates are balanced. <br><br>
 
 
In most of our experiments we analyze the <i>lux</i> operon which is constantly expressed. From a mathematical point of view, the dilution of a molecule by expanding the volume equals a degradation. For a growing bacterial culture, this dilution is caused by growth and cell divisions. We assume the dilution rate to be constant throughout the exponential growth phase of a culture. Consequently, the ratio of signal/OD<sub>600</sub> is expected to be constant in this time window.<br><br>
 
With this in mind, we aimed to create an algorithm identifying the exponential growth phase and calculating the signal to OD<sub>600</sub> ratio. In our first experiments we tried to identify a point in time at which all cultures grow exponentially, and failed.<br>
 
We were not able to obtain reproducible data for two reasons. Firstly, cultures grow differently, depending on the starting concentration and fitness differences caused by varying test constructs and expression strengths. Secondly, individual measurements are highly variable (we saw this especially for OD<sub>600</sub> measurements). Therefore performing calculations with a single value is highly susceptible to outliers. <br>
 
 
 
<figure style="width: 50%; float: right">
 
        <img src="https://static.igem.org/mediawiki/2018/d/d7/T--Marburg--Threshold.png">
 
        <figcaption><b> Figure 3: Sampling of time points </b> <br> The threshold is indicated with a dotted line at OD<sub>600</sub> = 0.2. The time point that first exceeded 0.2. is shown in red and the data points that are included in the range are displayed in green. The mean of the luminescence/OD<sub>600</sub> ratio of all points is calculated to assign a value to this well. <br>
 
The mean CV of all wells over the three independent experiments for each combination of OD<sub>600</sub> threshold and range is shown on the Z-axis
 
        </figcaption>
 
    </figure>
 
 
 
We solved both issues by developing a Matlab script that identifies the exponential phase and includes a range of seven measuring points for each individual well. The culture is assumed to be in the mid exponential phase at an OD<sub>600</sub> of 0.2. Three time points (5 min intervals), each before and after the culture has first reached 0.2, are taken. Then the mean of all signal to OD<sub>600</sub> ratios is calculated. Through this calculation, a single value is assigned to each well representing the strength of reporter expression in the exponential phase. All samples were measured in four technical replicates in three subsequent independent experiments. <br>
 
Consequently, every result (e.g. promoter strength) is, in total, the mean of 84 measurements. This high number of raw data leads to a high degree of reproducibility and, as we believe, to highly accurate characterization data.
 
<br>
 
<br>
 
The choice of 0.2 as the OD<sub>600</sub> threshold and the range of three time points was not randomly chosen but selected after calculating the mean CV for combinations of OD<sub>600</sub> thresholds and ranges. We tested OD<sub>600</sub> thresholds ranging from 0.1 to 0.6 with a step size of 0.01 and ranges around this data point from 0 to 10. Please note that the range is applied bidirectionally, meaning that a range of 10 considers 10 data points before and after a well has reached the OD<sub>600</sub> threshold resulting in averaging 21 time points.
 
 
 
 
 
<figure style="width: 100%; float: center">
 
        <img src="https://static.igem.org/mediawiki/2018/e/eb/T--Marburg--Analysis_Workflow.png">
 
        <figcaption><b> Figure 3: Evaluating the CV between different days depending on OD<sub>600</sub> threshold and time point range  </b> <br> The threshold indicates the OD<sub>600</sub> value which has to be reached by each individual well to determine the values considered for analyzation. The range sets the number of time points before and after the well reached the threshold that are used for mean calculation. <br>
 
The mean CV of all wells over the three independent experiments for each combination of OD<sub>600</sub> threshold and range is shown on the Z-axis
 
        </figcaption>
 
    </figure>
 
 
 
This 3D par plot allows for a visual estimation of advantageous combinations of OD<sub>600</sub> threshold and range of data points. Seemingly, using a rather low OD threshold (0.15 - 0.25) and a medium range size (2 - 5) yield a plateau of low coefficient of variation (CV) values as low as 10 %. In contrast, high OD thresholds (<3) and high ranges (<5) result in an explicit increase in CV data up to 38 %. <br>
 
As discussed previously, expression data can be assumed to be constant throughout the exponential growth phase. To our experience, the cultures leave the fully exponential phase around OD<sub>600</sub> = 0.5 - 0.6 resulting in a divergence from the previously constant luminescence/OD ratio which leads to a loss of reproducibility for high OD<sub>600</sub> thresholds. Slightly higher CV values can also be observed for very low OD thresholds. We noted that the OD<sub>600</sub> fluctuates significantly when measuring very low cell concentrations, presumably due to technical inaccuracies. This effect can drastically effect data points for low OD<sub>600</sub> values (<0.1). Generally, we consider using a high range useful because this increases the number of data points that are averaged, thus decreasing the impact of single outliers. However, for a fast growing organism like <i>V. natriegens</i>, the time of a culture with a OD<sub>600</sub> high enough to yield reliable measurement results but low enough to be exponentially growing is limited. Therefore an excessive range leads to inclusion of either too low or too high data points, which again reduces reproducibility. <br> 
 
We consider this analysis as a foundation for the selection of the OD<sub>600</sub> threshold 0.2 and a range of 3 that was used in the analysis of all our platereader experiments. This enabled us to achieve high reproducibility of our data from three subsequent, independent experiments.
 
 
 
<div class="collapsible">
 
    <div class="btn_expand">View example Matlab Code</div>
 
    <div class="content">
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">clear </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">all</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">close </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">all</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">%% Import Platereader raw data</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">Lux_Data_raw_Day1 = xlsread(</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'Connector_Lux_071018.xlsx'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'All Cycles'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">);</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">OD_Data_raw_Day1 = xlsread(</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'Connector_OD_071018.xlsx'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'All Cycles'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">);</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">Lux_Data_raw_Day2 = xlsread(</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'Connector_Lux_071018_2.xlsx'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'All Cycles'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">);</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">OD_Data_raw_Day2 = xlsread(</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'Connector_OD_071018_2.xlsx'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'All Cycles'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">);</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">Lux_Data_raw_Day3 = xlsread(</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'Connector_Lux_081018.xlsx'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'All Cycles'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">);</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">OD_Data_raw_Day3 = xlsread(</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'Connector_OD_081018.xlsx'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'All Cycles'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">);</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">%% Merge all data in two matrices</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">OD_Data(:,:,1) = OD_Data_raw_Day1;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">OD_Data(:,:,2) = OD_Data_raw_Day2;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">OD_Data(:,:,3) = OD_Data_raw_Day3;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">Lux_Data(:,:,1) = Lux_Data_raw_Day1;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">Lux_Data(:,:,2) = Lux_Data_raw_Day2;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">Lux_Data(:,:,3) = Lux_Data_raw_Day3;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">%% Blank substraction and cut off</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">for</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"> h = 1:size(Lux_Data,3)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">for</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"> k = 1:size(Lux_Data,2)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blank = mean(Lux_Data([60,72,84,96],k,h));</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">for</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"> j = 1:size(Lux_Data,1)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Lux_Data(j,k,h) = Lux_Data(j,k,h)-Blank;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">if</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"> Lux_Data(j,k,h) &lt; 50</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Lux_Data(j,k,h) = 50; </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">% Cut off for Lux signal</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">end</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">end</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">end</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">end</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">for</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"> h = 1:size(OD_Data,3)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">for</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"> k = 1:size(OD_Data,2)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blank = mean(OD_Data([60,72,84,96],k,h));</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">for</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"> j = 1:size(OD_Data,1)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OD_Data(j,k,h) = OD_Data(j,k,h)-Blank;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">if</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"> OD_Data(j,k,h) &lt; 0.01</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OD_Data(j,k,h) = 0.01; </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">% Cut off for OD</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">end</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">end</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">end</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">end</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">%% Calculating ratio around OD 0.2</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">Ratios = zeros(size(OD_Data,1),1,3);</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">for</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"> q = 1:size(OD_Data,3) </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">% looping over days</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">for</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"> o = 1:size(OD_Data,1) </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">% looping over samples</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">for</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"> p = 1:size(OD_Data,2)-3 </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">% looping through time points</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">if</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"> OD_Data(o,p,q) &gt; 0.2 &amp;&amp; OD_Data(o,p+1,q) &gt; 0.2 &amp;&amp; Ratios(o,q) == 0</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ratios(o,q) = mean(Lux_Data(o,p-3:p+3,q)./OD_Data(o,p-3:p+3,q));</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">end</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">end</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">end</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">end</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">%% Calculating mean and std of individial samples</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">for</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"> k = 1:12</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">Samples(k,1,1:3) = mean(Ratios([k,k+12,k+24,k+36],:)); </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">% calculate mean of technical triplicates</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">Samples(k,2,1:3) = std(Ratios([k,k+12,k+24,k+36],:)); </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">% calculate std of technical triplicates</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">end</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">for</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"> k = 13:24</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">Samples(k,1,1:3) = mean(Ratios([k+36,k+48,k+60,k+72],:)); </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">% calculate mean of technical triplicates</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">Samples(k,2,1:3) = std(Ratios([k+36,k+48,k+60,k+72],:)); </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">% calculate std of technical triplicates</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">end</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">%% Sort samples for top and bottom row</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">Names = {</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'J23100'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">, </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con1 long'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con2 long'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con3 long'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con4 long'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">...</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con5 long'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con1 short'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con2 short'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con3 short'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">...</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con4 short'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con5 short'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con1 long'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con2 long'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con3 long'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">...</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con4 long'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con5 long'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con1 short'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con2 short'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con3 short'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">...</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con4 short'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'5Con5 short'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">, </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'Promoter Dummy'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">};</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">Top_row = Samples(1:11,:,:);</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">Bot_row = Samples(13:23,:,:);</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">SortedValues = [];</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">for</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"> k = 1:size(Top_row,1)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">SortedValues = [SortedValues; Top_row(k,:,:); Bot_row(k,:,:)];</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">end</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">SortedValues = [SortedValues;Samples(12,:,:)];</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">SortedValues(22,:,:) = [];</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">%% Calculate relativ strength</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">Relative_strength = SortedValues;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">for</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"> h = 1:size(SortedValues,3)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">for</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;"> k = 1:size(SortedValues,1)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp; Relative_strength(size(SortedValues,1)-k+1,2,h) = </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">...</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Relative_strength(size(SortedValues,1)-k+1,2,h)/Relative_strength(1,1,h);</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp; Relative_strength(size(SortedValues,1)-k+1,1,h) = </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">...</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Relative_strength(size(SortedValues,1)-k+1,1,h)/Relative_strength(1,1,h);</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">end</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">end</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">%% plot relative strenths</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">figure(1) </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">% constructs with J23100</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">hold </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">on</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">bar(mean(Relative_strength([1:11,22],1,1:3),3),</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'facecolor'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,[125/255,202/255,97/255])</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">errorbar((mean(Relative_strength([1:11,22],1,1:3),3)),</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">...</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp; std(Relative_strength([1:11,22],1,1:3),1,3),</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'linestyle'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'none'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'color'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'k'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">set(gca, </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'YScale'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">, </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'log'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">ylabel(</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'normalized Luminescence/OD_6_0_0'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">set(gca,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'Color'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'w'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">xticks([1:12])</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">xticklabels(Names([1:11,22]))</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">xtickangle(45)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">ylim([0.001 3])</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">yticks([0.001,0.01,0.05, 0.1, 0.5, 1.0, 2.0 ])</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">yticklabels([0.001,0.01,0.05, 0.1, 0.5, 1.0, 2.0])</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">figure(2) </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">% constructs with promoter dummy</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">hold </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">on</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">bar(mean(Relative_strength([1,12:22],1,1:3),3),</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'facecolor'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,[125/255,202/255,97/255])</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">errorbar((mean(Relative_strength([1,12:22],1,1:3),3)),</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: blue;">...</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;&nbsp;&nbsp; std(Relative_strength([1,12:22],1,1:3),1,3),</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'linestyle'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'none'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'color'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'k'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">set(gca, </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'YScale'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">, </span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'log'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">ylabel(</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'normalized Luminescence/OD_6_0_0'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">set(gca,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'Color'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">,</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: #a020f0;">'w'</span><span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">xticks([1:12])</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">xticklabels(Names([1,12:22]))</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">xtickangle(45)</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">ylim([0.001 3])</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">yticks([0.001,0.01,0.05, 0.1, 0.5, 1.0, 2.0 ])</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">yticklabels([0.001,0.01,0.05, 0.1, 0.5, 1.0, 2.0])</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: black;">&nbsp;</span><br>
 
            <span style="font-size: 10.0pt; font-family: 'Courier New'; color: forestgreen;">
 
    </div>
 
</div>
 
 
 
</p>   
 
    </div>
 
  </div>
 
 
</p>   
 
    </div>
 
  </div>
 
 
 
 
</p> 
 
    </div>
 
  </div>
 
</p>   
 
    </div>
 
  </div>
 
</div>
 
</article>
 
</html>
 
{{Marburg/footer}}
 

Revision as of 20:22, 17 October 2018

Measurement