Team:Stanford/Research/Modeling

From 2010.igem.org

(Difference between revisions)
(Kinase/Phosphatase System)
 
(13 intermediate revisions not shown)
Line 4: Line 4:
==Goals==
==Goals==
Our intuition for what makes a good ratio sensor could only take us so far.  From the very first stages of design, we wanted to back up and test our ideas with mathematical tools.  Luckily, we found that solving the equations of mass action kinetics at steady-state was enough to give us clear design criteria.  We present the mathematical basis for sensors that are capable of sensing a single ratio digitally, or many ratios in an analog fashion.
Our intuition for what makes a good ratio sensor could only take us so far.  From the very first stages of design, we wanted to back up and test our ideas with mathematical tools.  Luckily, we found that solving the equations of mass action kinetics at steady-state was enough to give us clear design criteria.  We present the mathematical basis for sensors that are capable of sensing a single ratio digitally, or many ratios in an analog fashion.
-
 
-
==The System==
 
-
 
-
 
-
 
-
===sRNA System===
 
-
 
-
Boolean model for the sRNA system. This is mean to provide a significantly simplified mathematical understanding of the dynamics involved.
 
-
 
-
<html>
 
-
<head>
 
-
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 
-
  <!--
 
-
This HTML is auto-generated from an M-file.
 
-
To make changes, update the M-file and republish this document.
 
-
      --><title>iGEM_boolean_sRNA_model</title><meta name="generator" content="MATLAB 7.10"><meta name="date" content="2010-10-27"><meta name="m-file" content="iGEM_boolean_sRNA_model"><style type="text/css">
 
-
 
-
body {
 
-
  background-color: white;
 
-
  margin:10px;
 
-
}
 
-
 
-
h1 {
 
-
  color: #990000;
 
-
  font-size: x-large;
 
-
}
 
-
 
-
h2 {
 
-
  color: #990000;
 
-
  font-size: medium;
 
-
}
 
-
 
-
/* Make the text shrink to fit narrow windows, but not stretch too far in
 
-
wide windows. */
 
-
p,h1,h2,div.content div {
 
-
  max-width: 600px;
 
-
  /* Hack for IE6 */
 
-
  width: auto !important; width: 600px;
 
-
}
 
-
 
-
pre.codeinput {
 
-
  background: #EEEEEE;
 
-
  padding: 10px;
 
-
}
 
-
@media print {
 
-
  pre.codeinput {word-wrap:break-word; width:100%;}
 
-
}
 
-
 
-
span.keyword {color: #0000FF}
 
-
span.comment {color: #228B22}
 
-
span.string {color: #A020F0}
 
-
span.untermstring {color: #B20000}
 
-
span.syscmd {color: #B28C00}
 
-
 
-
pre.codeoutput {
 
-
  color: #666666;
 
-
  padding: 10px;
 
-
}
 
-
 
-
pre.error {
 
-
  color: red;
 
-
}
 
-
 
-
p.footer {
 
-
  text-align: right;
 
-
  font-size: xx-small;
 
-
  font-weight: lighter;
 
-
  font-style: italic;
 
-
  color: gray;
 
-
}
 
-
 
-
  </style></head><body><div class="content"><pre class="codeinput">clear <span class="string">all</span>
 
-
clc
 
-
 
-
<span class="comment">%Constants and Values</span>
 
-
trackingNum = 6;    <span class="comment">%mRNA_pA, mRNA_pB, sRNA_A, sRNA_B, protein_A, protein_B;</span>
 
-
inputNum = 2;      <span class="comment">%A, B;</span>
 
-
processNum = 6;    <span class="comment">%Trx_pA, Trx_sRNA_A, Trx_pB, Trx_sRNA_B, Trl_A, Trl_B;</span>
 
-
 
-
<span class="comment">%Cell/Matrix Dimensions</span>
 
-
m = 2^trackingNum;
 
-
n = 2^inputNum;
 
-
c = cell(m+1, n+1);
 
-
 
-
trackingMatrix = de2bi(0:m-1);
 
-
inputMatrix = de2bi(0:n-1);
 
-
processMatrix = zeros(1,processNum);
 
-
 
-
<span class="comment">%Populating the Cell (Tracking x Input)</span>
 
-
c{1,1} = [0];
 
-
<span class="keyword">for</span> j = 1
 
-
    <span class="keyword">for</span> i = 2:m+1
 
-
        c{i,j} = trackingMatrix(i-1,:);
 
-
    <span class="keyword">end</span>
 
-
<span class="keyword">end</span>
 
-
<span class="keyword">for</span> i = 1
 
-
    <span class="keyword">for</span> j = 2:n+1
 
-
        c{i,j} = inputMatrix(j-1,:);
 
-
    <span class="keyword">end</span>
 
-
<span class="keyword">end</span>
 
-
<span class="keyword">for</span> i = 2:m+1
 
-
    <span class="keyword">for</span> j = 2:n+1
 
-
        c{i,j} = processMatrix;
 
-
    <span class="keyword">end</span>
 
-
<span class="keyword">end</span>
 
-
 
-
<span class="comment">%Rules, Acessing, and Changing</span>
 
-
<span class="keyword">for</span> j = 2:n+1
 
-
    A = c{1,j}(1);
 
-
    B = c{1,j}(2);
 
-
 
-
    <span class="keyword">for</span> i = 2:m+1
 
-
        mRNA_pA = c{i,1}(1);
 
-
        mRNA_pB = c{i,1}(2);
 
-
        sRNA_A = c{i,1}(3);
 
-
        sRNA_B = c{i,1}(4);
 
-
        protein_A = c{i,1}(5);
 
-
        protein_B = c{i,1}(6);
 
-
 
-
        <span class="comment">%Trx_pA</span>
 
-
        <span class="keyword">if</span> A == 1
 
-
            c{i,j}(1) = 1;
 
-
        <span class="keyword">end</span>
 
-
 
-
        <span class="comment">%Trx_pB</span>
 
-
        <span class="keyword">if</span> B == 1
 
-
            c{i,j}(2) = 1;
 
-
        <span class="keyword">end</span>
 
-
 
-
        <span class="comment">%Trx_sRNA_A</span>
 
-
        <span class="keyword">if</span> A == 1
 
-
            c{i,j}(3) = 1;
 
-
        <span class="keyword">end</span>
 
-
 
-
        <span class="comment">%Trx_sRNA_B</span>
 
-
        <span class="keyword">if</span> B == 1
 
-
            c{i,j}(4) = 1;
 
-
        <span class="keyword">end</span>
 
-
 
-
        <span class="comment">%Trl_A</span>
 
-
        <span class="keyword">if</span> mRNA_pA == 1 &amp;&amp; mRNA_pB == 0
 
-
            c{i,j}(5) = 1;
 
-
        <span class="keyword">end</span>
 
-
 
-
        <span class="comment">%Trl_B</span>
 
-
        <span class="keyword">if</span> mRNA_pB == 1 &amp;&amp; mRNA_pA == 0
 
-
            c{i,j}(6) = 1;
 
-
        <span class="keyword">end</span>
 
-
 
-
    <span class="keyword">end</span>
 
-
<span class="keyword">end</span>
 
-
 
-
<span class="comment">%Display Results (Column by Column)</span>
 
-
[nrows,ncols]= size(c);
 
-
<span class="comment">%Condense Cell and Display</span>
 
-
<span class="keyword">for</span> i = 1:nrows
 
-
    <span class="keyword">for</span> j = 1:ncols
 
-
        string = num2str(c{i,j});
 
-
        l = length(string);
 
-
        r = 1;
 
-
        s = 1;
 
-
        t = 0;
 
-
 
-
        <span class="keyword">while</span> t ~= 1
 
-
            <span class="keyword">if</span> r == l
 
-
            t = 1;
 
-
            <span class="keyword">end</span>
 
-
 
-
            noSpacesString(s) = string(r);
 
-
            r = r+3;
 
-
            s = s+1;
 
-
        <span class="keyword">end</span>
 
-
        c{i,j} = noSpacesString;
 
-
    <span class="keyword">end</span>
 
-
<span class="keyword">end</span>
 
-
c(:,:)
 
-
 
-
<span class="comment">%Find Steady States and Corresponding Inputs</span>
 
-
counter = 1;
 
-
<span class="keyword">for</span> i = 2:m+1
 
-
    <span class="keyword">for</span> j = 2:n+1
 
-
        <span class="keyword">if</span> c{i,j} == c{i,1}
 
-
            completeMatrix{counter,1} = c{i,j};            <span class="comment">%Steady state values</span>
 
-
            completeMatrix{counter,2} = num2str([i-1,j-1]); <span class="comment">%Location (n x m) within results area</span>
 
-
            completeMatrix{counter,3} = c{1,j};            <span class="comment">%Corresponding input values</span>
 
-
            counter = counter+1;
 
-
        <span class="keyword">end</span>
 
-
    <span class="keyword">end</span>
 
-
<span class="keyword">end</span>
 
-
SS_mXn_Input = completeMatrix
 
-
 
-
time = 0:processNum;
 
-
<span class="comment">%plot(time,,time,,time,,time,,time,,time,)</span>
 
-
 
-
<span class="comment">%New Cell for Specific Cases</span>
 
-
<span class="comment">% d(:,1) = c(:,1);</span>
 
-
<span class="comment">% for j = 2:n+1</span>
 
-
<span class="comment">%    C1 = '0000';</span>
 
-
<span class="comment">%    C2 = '0011';</span>
 
-
<span class="comment">%    C3 = '0100';</span>
 
-
<span class="comment">%    C4 = '0111';</span>
 
-
<span class="comment">%    C5 = '1000';</span>
 
-
<span class="comment">%    C6 = '1011';</span>
 
-
<span class="comment">%    C7 = '1100';</span>
 
-
<span class="comment">%</span>
 
-
<span class="comment">%    a = {C1, C2, C3, C4, C5, C6, C7};</span>
 
-
<span class="comment">%    for b = 1:1:length(a)</span>
 
-
<span class="comment">%        if strcmp(c(1,j),a(b)) == 1</span>
 
-
<span class="comment">%            d(:,b+1) = c(:,j);</span>
 
-
<span class="comment">%        end</span>
 
-
<span class="comment">%    end</span>
 
-
<span class="comment">% end</span>
 
-
<span class="comment">% d</span>
 
-
</pre><pre class="codeoutput">
 
-
ans =
 
-
 
-
    '0'        '00'        '01'        '10'        '11'   
 
-
    '000000'    '000000'    '010100'    '101000'    '111100'
 
-
    '000001'    '000000'    '010100'    '101000'    '111100'
 
-
    '000010'    '000000'    '010100'    '101000'    '111100'
 
-
    '000011'    '000000'    '010100'    '101000'    '111100'
 
-
    '000100'    '000000'    '010100'    '101000'    '111100'
 
-
    '000101'    '000000'    '010100'    '101000'    '111100'
 
-
    '000110'    '000000'    '010100'    '101000'    '111100'
 
-
    '000111'    '000000'    '010100'    '101000'    '111100'
 
-
    '001000'    '000000'    '010100'    '101000'    '111100'
 
-
    '001001'    '000000'    '010100'    '101000'    '111100'
 
-
    '001010'    '000000'    '010100'    '101000'    '111100'
 
-
    '001011'    '000000'    '010100'    '101000'    '111100'
 
-
    '001100'    '000000'    '010100'    '101000'    '111100'
 
-
    '001101'    '000000'    '010100'    '101000'    '111100'
 
-
    '001110'    '000000'    '010100'    '101000'    '111100'
 
-
    '001111'    '000000'    '010100'    '101000'    '111100'
 
-
    '010000'    '000001'    '010101'    '101001'    '111101'
 
-
    '010001'    '000001'    '010101'    '101001'    '111101'
 
-
    '010010'    '000001'    '010101'    '101001'    '111101'
 
-
    '010011'    '000001'    '010101'    '101001'    '111101'
 
-
    '010100'    '000001'    '010101'    '101001'    '111101'
 
-
    '010101'    '000001'    '010101'    '101001'    '111101'
 
-
    '010110'    '000001'    '010101'    '101001'    '111101'
 
-
    '010111'    '000001'    '010101'    '101001'    '111101'
 
-
    '011000'    '000001'    '010101'    '101001'    '111101'
 
-
    '011001'    '000001'    '010101'    '101001'    '111101'
 
-
    '011010'    '000001'    '010101'    '101001'    '111101'
 
-
    '011011'    '000001'    '010101'    '101001'    '111101'
 
-
    '011100'    '000001'    '010101'    '101001'    '111101'
 
-
    '011101'    '000001'    '010101'    '101001'    '111101'
 
-
    '011110'    '000001'    '010101'    '101001'    '111101'
 
-
    '011111'    '000001'    '010101'    '101001'    '111101'
 
-
    '100000'    '000010'    '010110'    '101010'    '111110'
 
-
    '100001'    '000010'    '010110'    '101010'    '111110'
 
-
    '100010'    '000010'    '010110'    '101010'    '111110'
 
-
    '100011'    '000010'    '010110'    '101010'    '111110'
 
-
    '100100'    '000010'    '010110'    '101010'    '111110'
 
-
    '100101'    '000010'    '010110'    '101010'    '111110'
 
-
    '100110'    '000010'    '010110'    '101010'    '111110'
 
-
    '100111'    '000010'    '010110'    '101010'    '111110'
 
-
    '101000'    '000010'    '010110'    '101010'    '111110'
 
-
    '101001'    '000010'    '010110'    '101010'    '111110'
 
-
    '101010'    '000010'    '010110'    '101010'    '111110'
 
-
    '101011'    '000010'    '010110'    '101010'    '111110'
 
-
    '101100'    '000010'    '010110'    '101010'    '111110'
 
-
    '101101'    '000010'    '010110'    '101010'    '111110'
 
-
    '101110'    '000010'    '010110'    '101010'    '111110'
 
-
    '101111'    '000010'    '010110'    '101010'    '111110'
 
-
    '110000'    '000000'    '010100'    '101000'    '111100'
 
-
    '110001'    '000000'    '010100'    '101000'    '111100'
 
-
    '110010'    '000000'    '010100'    '101000'    '111100'
 
-
    '110011'    '000000'    '010100'    '101000'    '111100'
 
-
    '110100'    '000000'    '010100'    '101000'    '111100'
 
-
    '110101'    '000000'    '010100'    '101000'    '111100'
 
-
    '110110'    '000000'    '010100'    '101000'    '111100'
 
-
    '110111'    '000000'    '010100'    '101000'    '111100'
 
-
    '111000'    '000000'    '010100'    '101000'    '111100'
 
-
    '111001'    '000000'    '010100'    '101000'    '111100'
 
-
    '111010'    '000000'    '010100'    '101000'    '111100'
 
-
    '111011'    '000000'    '010100'    '101000'    '111100'
 
-
    '111100'    '000000'    '010100'    '101000'    '111100'
 
-
    '111101'    '000000'    '010100'    '101000'    '111100'
 
-
    '111110'    '000000'    '010100'    '101000'    '111100'
 
-
    '111111'    '000000'    '010100'    '101000'    '111100'
 
-
 
-
 
-
SS_mXn_Input =
 
-
 
-
    '000000'    '1  1'      '00'
 
-
    '010101'    '22  2'    '01'
 
-
    '101010'    '43  3'    '10'
 
-
    '111100'    '61  4'    '11'
 
-
 
-
</pre><p class="footer"><br>
 
-
      Published with MATLAB&reg; 7.10<br></p></div><!--
 
-
##### SOURCE BEGIN #####
 
-
clear all
 
-
clc
 
-
 
-
%Constants and Values
 
-
trackingNum = 6;    %mRNA_pA, mRNA_pB, sRNA_A, sRNA_B, protein_A, protein_B;
 
-
inputNum = 2;      %A, B;
 
-
processNum = 6;    %Trx_pA, Trx_sRNA_A, Trx_pB, Trx_sRNA_B, Trl_A, Trl_B;
 
-
 
-
%Cell/Matrix Dimensions
 
-
m = 2^trackingNum;
 
-
n = 2^inputNum;
 
-
c = cell(m+1, n+1);
 
-
 
-
trackingMatrix = de2bi(0:m-1);
 
-
inputMatrix = de2bi(0:n-1);
 
-
processMatrix = zeros(1,processNum);
 
-
 
-
%Populating the Cell (Tracking x Input)
 
-
c{1,1} = [0];
 
-
for j = 1
 
-
    for i = 2:m+1
 
-
        c{i,j} = trackingMatrix(i-1,:);
 
-
    end
 
-
end
 
-
for i = 1
 
-
    for j = 2:n+1
 
-
        c{i,j} = inputMatrix(j-1,:);
 
-
    end
 
-
end
 
-
for i = 2:m+1
 
-
    for j = 2:n+1
 
-
        c{i,j} = processMatrix;
 
-
    end
 
-
end
 
-
 
-
%Rules, Acessing, and Changing
 
-
for j = 2:n+1
 
-
    A = c{1,j}(1);
 
-
    B = c{1,j}(2);
 
-
   
 
-
    for i = 2:m+1
 
-
        mRNA_pA = c{i,1}(1);
 
-
        mRNA_pB = c{i,1}(2);
 
-
        sRNA_A = c{i,1}(3);
 
-
        sRNA_B = c{i,1}(4);
 
-
        protein_A = c{i,1}(5);
 
-
        protein_B = c{i,1}(6);
 
-
       
 
-
        %Trx_pA
 
-
        if A == 1
 
-
            c{i,j}(1) = 1;
 
-
        end
 
-
       
 
-
        %Trx_pB
 
-
        if B == 1
 
-
            c{i,j}(2) = 1;
 
-
        end
 
-
       
 
-
        %Trx_sRNA_A
 
-
        if A == 1
 
-
            c{i,j}(3) = 1;
 
-
        end
 
-
       
 
-
        %Trx_sRNA_B
 
-
        if B == 1
 
-
            c{i,j}(4) = 1;
 
-
        end
 
-
       
 
-
        %Trl_A
 
-
        if mRNA_pA == 1 && mRNA_pB == 0
 
-
            c{i,j}(5) = 1;
 
-
        end
 
-
       
 
-
        %Trl_B
 
-
        if mRNA_pB == 1 && mRNA_pA == 0
 
-
            c{i,j}(6) = 1;
 
-
        end
 
-
       
 
-
    end
 
-
end
 
-
 
-
%Display Results (Column by Column)
 
-
[nrows,ncols]= size(c);
 
-
%Condense Cell and Display
 
-
for i = 1:nrows
 
-
    for j = 1:ncols       
 
-
        string = num2str(c{i,j});
 
-
        l = length(string);
 
-
        r = 1;
 
-
        s = 1;
 
-
        t = 0;
 
-
       
 
-
        while t ~= 1
 
-
            if r == l
 
-
            t = 1;
 
-
            end
 
-
           
 
-
            noSpacesString(s) = string(r);
 
-
            r = r+3;
 
-
            s = s+1;
 
-
        end
 
-
        c{i,j} = noSpacesString;
 
-
    end
 
-
end
 
-
c(:,:)
 
-
 
-
%Find Steady States and Corresponding Inputs
 
-
counter = 1;
 
-
for i = 2:m+1
 
-
    for j = 2:n+1
 
-
        if c{i,j} == c{i,1}
 
-
            completeMatrix{counter,1} = c{i,j};            %Steady state values
 
-
            completeMatrix{counter,2} = num2str([i-1,j-1]); %Location (n x m) within results area
 
-
            completeMatrix{counter,3} = c{1,j};            %Corresponding input values           
 
-
            counter = counter+1;
 
-
        end
 
-
    end
 
-
end
 
-
SS_mXn_Input = completeMatrix
 
-
 
-
time = 0:processNum;
 
-
%plot(time,,time,,time,,time,,time,,time,)
 
-
 
-
%New Cell for Specific Cases
 
-
% d(:,1) = c(:,1);
 
-
% for j = 2:n+1
 
-
%    C1 = '0000';
 
-
%    C2 = '0011';
 
-
%    C3 = '0100';
 
-
%    C4 = '0111';
 
-
%    C5 = '1000';
 
-
%    C6 = '1011';
 
-
%    C7 = '1100';
 
-
%   
 
-
%    a = {C1, C2, C3, C4, C5, C6, C7};
 
-
%    for b = 1:1:length(a)
 
-
%        if strcmp(c(1,j),a(b)) == 1
 
-
%            d(:,b+1) = c(:,j);
 
-
%        end
 
-
%    end
 
-
% end
 
-
% d
 
-
##### SOURCE END #####
 
-
--></body>
 
-
</html>
 
-
 
==Kinase/Phosphatase System==
==Kinase/Phosphatase System==
-
Throughout this derivation, we refer to Goldbeter and Koshland's seminal work on the kinetics of emzyme pairs [[Team:Stanford/Research/Modeling/#References| [1]]].
+
Throughout this derivation, we refer to Goldbeter and Koshland's seminal work on the kinetics of emzyme pairs [[Team:Stanford/Research/Modeling#References| [1]]].
-
For an opposing pair of enzymes X and Y modifying and unmodifying a substrate Z with modification p,
+
For an opposing pair of enzymes ''X'' and ''Y'' modifying and unmodifying a substrate ''Z'' with modification ''p'',
-
[[Image:MainGBK.JPG]]
+
[[Image:MainGBK.JPG|center]]
-
From Michaelis-Menten kinetics we know that the rate at which Zp is dephosphorylated is  
+
From Michaelis-Menten kinetics we know that the rate at which ''Zp'' is dephosphorylated is  
[[Image:R1.JPG]][[Team:Stanford/Research/Modeling#References| [2]]]
[[Image:R1.JPG]][[Team:Stanford/Research/Modeling#References| [2]]]
-
and the rate at which Z is phosphorylated is  
+
and the rate at which ''Z'' is phosphorylated is  
[[Image:R2.JPG]][[Team:Stanford/Research/Modeling#References| [2]]]
[[Image:R2.JPG]][[Team:Stanford/Research/Modeling#References| [2]]]
-
We also know that Z can be modified an unmodified, but its total is conserved: [Z]o = [Zp] + [Z]
+
We also know that ''Z'' can be modified an unmodified, but its total is conserved: ''[Z]o = [Zp] + [Z]''
At steady state, modification and unmodification rates are equal, leading us to
At steady state, modification and unmodification rates are equal, leading us to
Line 470: Line 31:
Rearranging gives
Rearranging gives
-
[[Image:3rdblock.JPG]].
+
[[Image:3rdblock.JPG|center]]
Now, assume that the two opposing enzymes are nowhere near being saturated with substrate:
Now, assume that the two opposing enzymes are nowhere near being saturated with substrate:
-
[[Image:4thblock.JPG]]
+
[[Image:4thblock.JPG|center]]
-
So, the fraction of modified substrate is a saturating function of the ratio of inputs.  The half-max value is the ratio of the strengths of the two enzymes.  The linear regime of this function exists where
+
which is the equation for a Michaelis-Menten-shaped curve as shown below:
-
[[Image:5thblock.JPG]],
+
[[Image:Langmuir.JPG|center]]
-
and the fraction of unmodified substrate is a linear function of the ratio of inputs.
+
So, the fraction of modified substrate is a saturating function of the ratio of inputs, the half-max value is the ratio of the strengths of the two enzymes, and the fraction of unmodified substrate is a linear function of the ratio of inputs,
-
[[Image:6thblock.JPG]]
+
[[Image:6thblock.JPG|center]]
We now know that the requirements for this analog ratio sensor are  
We now know that the requirements for this analog ratio sensor are  
Line 492: Line 53:
But what happens if we disobey requirement 1?  Let's increase the amount of substrate to saturation so that
But what happens if we disobey requirement 1?  Let's increase the amount of substrate to saturation so that
-
[[Image:7thblock.JPG]]
+
[[Image:7thblock.JPG|center]]
-
[[Image:8thblock.JPG]]
+
[[Image:8thblock.JPG|center]]
-
When the enzymes are saturated, the only steady-state solution is v1 = v2.  Any ratio of v1/v2 below this, and all the substrate becomes modified.  Any ratio above and all the substrate becomes unmodified.  Simply by changing the concentration of substrate, we have converted our analog ratio sensor to a digital ratio sensor.
+
When the enzymes are saturated, the only steady-state solution is'' v1'' = ''v2''.  Any ratio of ''v1/v2'' below this, and all the substrate becomes modified.  Any ratio above and all the substrate becomes unmodified.  Simply by changing the concentration of substrate, we have converted our analog ratio sensor to a digital ratio sensor.
The requirements for this digital ratio sensor are:
The requirements for this digital ratio sensor are:
Line 503: Line 64:
<li>An amount of substrate sufficient to saturate both opposing enzymes</li>
<li>An amount of substrate sufficient to saturate both opposing enzymes</li>
</ol>
</ol>
 +
 +
==sRNA System==
 +
This sRNA system is bases its analysis on the work of Nicolas Buchler. [[Team:Stanford/Research/Modeling#References| [3]]]
 +
 +
Consider an sRNA that can bind to an mRNA and inhibit its translation.  The pair binds and dissociates with dissociation constant Kd. 
 +
 +
For a moment, imagine that this interaction is infinitely strong, such that Kd -> 0.  In this case, all the mRNA available will bind to the sRNA, until every sRNA is occupied by one mRNA.  Once this threshold, defined by the total sRNA concentration, is reached, additional mRNA added is free to be translated.  Here we show the accumulation of translatable free mRNA, and hence Gene Expression vs. total mRNA, in the presence of varying concentrations of infinitely strong sRNA
 +
 +
[[Image:sRNA1.JPG|center]]
 +
 +
At the point that the sRNA becomes saturated, two interesting things occur. 
 +
<ol>
 +
<li>There is a sharp transition between no gene expression and a linearly-increasing amount of gene expression.</li>
 +
<li>This transition occurs only when the concentration of mRNA is equal to the concentration of sRNA.</li>
 +
</ol>
 +
 +
We have designed a sensor that responds to a 1:1 mRNA:sRNA ratio with a sharp change in output.
 +
 +
But will this system have the same desirable properties when the sRNA is only realistically strong?  Here we assume a 1 nM interaction between sRNA and mRNA
 +
 +
[[Image:sRNA2.JPG|center]]
 +
 +
We find that the transition is still quite sharp when the sRNA has a realistic dissociation constant.
== References ==  
== References ==  
-
[1] [http://www.ncbi.nlm.nih.gov/pubmed/6947258 Goldbeter A, Koshland DE Jr.: An amplified sensitivity arising from covalent modification in biological systems. PNAS. 1981 Nov;78(11)6840-4.]
+
[1] [http://www.ncbi.nlm.nih.gov/pubmed/6947258 Goldbeter A, Koshland DE Jr.: An amplified sensitivity arising from covalent modification in biological systems. PNAS. 1981 Nov; 78(11) 6840-4.]
[2] [http://en.wikipedia.org/wiki/Goldbeter-Koshland_kinetics Goldbeter-Koshland kinetics In <i>Wikipedia.</i> Retrieved July 13, 2010, from http://en.wikipedia.org/wiki/Goldbeter-Koshland_kinetics]
[2] [http://en.wikipedia.org/wiki/Goldbeter-Koshland_kinetics Goldbeter-Koshland kinetics In <i>Wikipedia.</i> Retrieved July 13, 2010, from http://en.wikipedia.org/wiki/Goldbeter-Koshland_kinetics]
</div>
</div>
 +
 +
[3] [http://www.ncbi.nlm.nih.gov/pubmed/18938177 Buchler NE, Luis M. Molecular titration and ultrasensitivity in regulatory networks. J. Mol. Biol. 2008 Dec 31; 384(5):1106-19]

Latest revision as of 03:56, 28 October 2010

Contents

Goals

Our intuition for what makes a good ratio sensor could only take us so far. From the very first stages of design, we wanted to back up and test our ideas with mathematical tools. Luckily, we found that solving the equations of mass action kinetics at steady-state was enough to give us clear design criteria. We present the mathematical basis for sensors that are capable of sensing a single ratio digitally, or many ratios in an analog fashion.

Kinase/Phosphatase System

Throughout this derivation, we refer to Goldbeter and Koshland's seminal work on the kinetics of emzyme pairs [1]. For an opposing pair of enzymes X and Y modifying and unmodifying a substrate Z with modification p,

MainGBK.JPG

From Michaelis-Menten kinetics we know that the rate at which Zp is dephosphorylated is

R1.JPG [2]

and the rate at which Z is phosphorylated is

R2.JPG [2]

We also know that Z can be modified an unmodified, but its total is conserved: [Z]o = [Zp] + [Z]

At steady state, modification and unmodification rates are equal, leading us to

1stblock.JPG [2]

where

2nd block.JPG [2]


Rearranging gives

3rdblock.JPG

Now, assume that the two opposing enzymes are nowhere near being saturated with substrate:

4thblock.JPG

which is the equation for a Michaelis-Menten-shaped curve as shown below:

Langmuir.JPG

So, the fraction of modified substrate is a saturating function of the ratio of inputs, the half-max value is the ratio of the strengths of the two enzymes, and the fraction of unmodified substrate is a linear function of the ratio of inputs,

6thblock.JPG

We now know that the requirements for this analog ratio sensor are

  1. Consistent relationships between inputs and enzyme activities (non-trivial)
  2. A non-saturating amount of substrate

But what happens if we disobey requirement 1? Let's increase the amount of substrate to saturation so that

7thblock.JPG
8thblock.JPG

When the enzymes are saturated, the only steady-state solution is v1 = v2. Any ratio of v1/v2 below this, and all the substrate becomes modified. Any ratio above and all the substrate becomes unmodified. Simply by changing the concentration of substrate, we have converted our analog ratio sensor to a digital ratio sensor.

The requirements for this digital ratio sensor are:

  1. Consistent relationships between inputs and enzyme activities (non-trivial)
  2. An amount of substrate sufficient to saturate both opposing enzymes

sRNA System

This sRNA system is bases its analysis on the work of Nicolas Buchler. [3]

Consider an sRNA that can bind to an mRNA and inhibit its translation. The pair binds and dissociates with dissociation constant Kd.

For a moment, imagine that this interaction is infinitely strong, such that Kd -> 0. In this case, all the mRNA available will bind to the sRNA, until every sRNA is occupied by one mRNA. Once this threshold, defined by the total sRNA concentration, is reached, additional mRNA added is free to be translated. Here we show the accumulation of translatable free mRNA, and hence Gene Expression vs. total mRNA, in the presence of varying concentrations of infinitely strong sRNA

SRNA1.JPG

At the point that the sRNA becomes saturated, two interesting things occur.

  1. There is a sharp transition between no gene expression and a linearly-increasing amount of gene expression.
  2. This transition occurs only when the concentration of mRNA is equal to the concentration of sRNA.

We have designed a sensor that responds to a 1:1 mRNA:sRNA ratio with a sharp change in output.

But will this system have the same desirable properties when the sRNA is only realistically strong? Here we assume a 1 nM interaction between sRNA and mRNA

SRNA2.JPG

We find that the transition is still quite sharp when the sRNA has a realistic dissociation constant.

References

[1] [http://www.ncbi.nlm.nih.gov/pubmed/6947258 Goldbeter A, Koshland DE Jr.: An amplified sensitivity arising from covalent modification in biological systems. PNAS. 1981 Nov; 78(11) 6840-4.]

[2] [http://en.wikipedia.org/wiki/Goldbeter-Koshland_kinetics Goldbeter-Koshland kinetics In Wikipedia. Retrieved July 13, 2010, from http://en.wikipedia.org/wiki/Goldbeter-Koshland_kinetics]

[3] [http://www.ncbi.nlm.nih.gov/pubmed/18938177 Buchler NE, Luis M. Molecular titration and ultrasensitivity in regulatory networks. J. Mol. Biol. 2008 Dec 31; 384(5):1106-19]