Team:Paris/Modeling/Others prog

From 2008.igem.org

complexes

function complexes = complexes(x,y,K,n)
% amount of complexes n*x + y = x_-_y in function of x, y
 
% x, y = initial amounts of binding molecules
% K = dissociation constant
% n = stoechiometric coefficient of x
 
syms z; % to treat z as a symbolic variable
Eqn = ( ( x - n*z )^n )*( y - z ) - K*z; % to define the equation in whose
                                          % the amount of complexes is a root  
 
S = eval(solve( Eqn, 'z' )); % the vector of the roots
 
Index = find ((0 < S) & (n*S < x) & (S < y) & (imag(S) == 0)); % determine  
                                                                % which
                                                                % root is  
                                                                % acceptable
 
complexes = S(Index(1)); % the result
 
end

hill

function compl = hill(x,K,n)
% complexation nx + Y = x_-_Y when x is in large excess :
% gives the ratio (x_-_Y)/(Ytotal) in function of x
 
% x = molecule that binds to Y
% K^n = dissociation constant
% n = stoechiometric coefficient of x ; also known as 'cooperativity'
 
compl = x^n/(K^n + x^n);
 
end

Global

function labo=Core_Sytem_Simulation (t, init, prom1, prom2, retro)
% Simulation of our Core_System
 
% prom1 = 'pTet' or 'pFlhDC'
% prom2 = 'pFlgA' or 'pFlgB'
% retro = 'EnvZ' or 'OmpR' or quantity of aTc
 
% t = discret time scale
% init = vector of the initial state
%   [FlhDC;
%    FliA;
%    FP1;
%    FP2;
%    FP3;
%    TetR / OmpR / EnvZ] regards to the studied version
 
global gamma beta16 K13 n13 K12 n12 K15 n15 beta17 K6 n6 ...
     beta22 beta18 K1 n1 beta23 K7 n7 beta24 K2 n2 ...
     beta25 K8 n8 gamma37 beta26 K3 n3 beta27 K9 n9 ...
     gamma38 beta28 K4 n4 beta29 K10 n10 beta30 K5 n5 ...
     beta31 K11 n11 gamma39 EnvZ_b OmpR_b K14 n14;  
% A program must load all parameters !
 
if prom2 == 'pFlgA'
     F = @f6
elseif prom2 == 'pFlgA'
         F = @f7
     end
else error('Wrong promoter for FP2 ')
end
 
if prom1 == 'pTet'
     try aTc = eval(retro)
     catch error('Wrong aTc Value')
     end
       
     function ydot = deriv(t,y) % dy/dt
                                % pTet : y(6) = TetR ; retro = aTc
         ydot = [f1(y(6), aTc);
                 f4(y(1), y(2));
                 f5(y(1), y(2)) - gamma36;
                 F(y(1), y(2)) - gamma37;
                 f8(y(1), y(2)) - gamma38;
                 f8(y(1), y(2));] - gamma*ones(6,1)
     end
elseif prom1 == 'pFlhDC'
     if retro == 'OmpR'
         function ydot = deriv(t,y)  % dy/dt
                                     % pFlhDC : y(6) = OmpR
             ydot = [f3(y(2), y(6));
                     f4(y(1), y(2));
                     f5(y(1), y(2)) - gamma36;
                     F(y(1), y(2)) - gamma37;
                     f8(y(1), y(2)) - gamma38;
                     f8(y(1), y(2));] - gamma*ones(6,1)
         end
     elseif retro == 'EnvZ'
         function ydot = deriv(t,y)  % dy/dt
                                     % pFlhDC : y(6) = EnvZ
             ydot = [f3bis(y(6), y(2));
                     f4(y(1), y(2));
                     f5(y(1), y(2)) - gamma36;
                     F(y(1), y(2)) - gamma37;
                     f8(y(1), y(2)) - gamma38;
                     f8(y(1), y(2));] - gamma*ones(6,1)
         end
     else
         error('gene for negative feed-back')
     end
else
     error('Wrong promoter for flhDC')
     end
end
 
[t,labo]=ode45(deriv,t,init);
 
% The 'full modularity' of this Approach allow other variations,  
% like  changing the place of the negative feed-back
% (changing f8 by f7, f6, f5)...