Team:Groningen/Modelling/Characterization

From 2009.igem.org

(Difference between revisions)
(Different mutate, more general output function, more variables.)
Line 64: Line 64:
|-
|-
|v5/K5
|v5/K5
-
|id="v5K5"|
+
|id="v5_K5"|
-
|id="v5K5cur"|
+
|id="v5_K5cur"|
-
|id="v5K5curgradient"|
+
|id="v5_K5curgradient"|
-
|id="v5K5sol"|
+
|id="v5_K5sol"|
|-
|-
|v5
|v5
Line 82: Line 82:
|-
|-
|k8/K7
|k8/K7
-
|id="k8K7"|
+
|id="k8_K7"|
-
|id="k8K7cur"|
+
|id="k8_K7cur"|
-
|id="k8K7curgradient"|
+
|id="k8_K7curgradient"|
-
|id="k8K7sol"|
+
|id="k8_K7sol"|
|-
|-
|k8
|k8
Line 116: Line 116:
|id="beta4curgradient"|
|id="beta4curgradient"|
|id="beta4sol"|
|id="beta4sol"|
 +
|-
 +
|tauR
 +
|id="tauR"|
 +
|id="tauRcur"|
 +
|id="tauRcurgradient"|
 +
|id="tauRsol"|
 +
|-
 +
|beta1
 +
|id="beta1"|
 +
|id="beta1cur"|
 +
|id="beta1curgradient"|
 +
|id="beta1sol"|
|-
|-
|E
|E
Line 137: Line 149:
                     time:[1.127*60,4.993*60,9.986*60,20.159*60,30.181*60,60.035*60]}];   
                     time:[1.127*60,4.993*60,9.986*60,20.159*60,30.181*60,60.035*60]}];   
-
var varsToMutate = ['v5K5','K5','k8K7','K7','tauBbeta4','beta4'];
+
var varsToMutate = ['v5_K5','v5','k8_K7','k8','tauBbeta4','beta4','tauR_tauB','beta1_beta4'];
-
var mutateFuncs = {v5: function(v){return v.v5K5*v.K5;},
+
var mutateFuncs = {v5: function(v){return v.v5;},
-
                   K5: function(v){return v.K5;},
+
                   K5: function(v){return v.v5/v.v5_K5;},
-
                   k8: function(v){return v.k8K7*v.K7;},
+
                   k8: function(v){return v.k8;},
-
                   K7: function(v){return v.K7;},
+
                   K7: function(v){return v.k8/v.k8_K7;},
                   tauB: function(v){return v.tauBbeta4/v.beta4;},
                   tauB: function(v){return v.tauBbeta4/v.beta4;},
-
                   beta4: function(v){return v.beta4;}};
+
                  tauR: function(v){return v.tauR_tauB*v.tauBbeta4/v.beta4;},
 +
                   beta4: function(v){return v.beta4;},
 +
                  beta1: function(v){return v.beta4*v.beta1_beta4;}};
function computeCost(v,e) {
function computeCost(v,e) {
Line 172: Line 186:
   }
   }
   return cost/e.length; // Take the average of the RMS values for all graphs, making it "easier" to disregard certain experiments in favour of the rest.
   return cost/e.length; // Take the average of the RMS values for all graphs, making it "easier" to disregard certain experiments in favour of the rest.
 +
}
 +
 +
function randomLogNormal(mu,sigma) {
 +
  var N = Math.random()+Math.random()+Math.random()+Math.random()+Math.random()+Math.random()
 +
          - (Math.random()+Math.random()+Math.random()+Math.random()+Math.random()+Math.random());
 +
  return Math.exp(mu+sigma*N);
}
}
Line 180: Line 200:
   // Mutate
   // Mutate
-
   var factor = 1+0.01*(1-Math.exp(-Math.random()));
+
   /*var factor = 1+0.01*(1-Math.exp(-Math.random()));
   if (Math.random()<0.5+Math.atan(dc[vn])/Math.PI) {
   if (Math.random()<0.5+Math.atan(dc[vn])/Math.PI) {
     factor = 1 / factor;
     factor = 1 / factor;
-
   }
+
   }*/
 +
  var sigma = 0.1;
 +
  var factor = randomLogNormal(0,sigma);
   nc[vn] *= factor;
   nc[vn] *= factor;
   return nc;
   return nc;
Line 189: Line 211:
function showOutputs(mode,E,c,dc) {
function showOutputs(mode,E,c,dc) {
-
   setOutput('v5K5'+mode,mutateFuncs.v5(c)/mutateFuncs.K5(c));
+
   for(var a in c) {
-
  setOutput('v5'+mode,mutateFuncs.v5(c));
+
    setOutput(a+mode,c[a]);
-
   setOutput('K5'+mode,mutateFuncs.K5(c));
+
   }
-
   setOutput('k8K7'+mode,mutateFuncs.k8(c)/mutateFuncs.K7(c));
+
   for(var a in mutateFuncs) {
-
  setOutput('k8'+mode,mutateFuncs.k8(c));
+
    setOutput(a+mode,mutateFuncs[a](c));
-
   setOutput('K7'+mode,mutateFuncs.K7(c));
+
   }
-
  setOutput('tauBbeta4'+mode,mutateFuncs.tauB(c)/mutateFuncs.beta4(c));
+
-
  setOutput('tauB'+mode,mutateFuncs.tauB(c));
+
-
  setOutput('beta4'+mode,mutateFuncs.beta4(c));
+
   setOutput('E'+mode,E);
   setOutput('E'+mode,E);
   if (dc!=undefined) {
   if (dc!=undefined) {
-
     setOutput('v5K5'+mode+'gradient',dc.v5K5);
+
     for(var a in dc) {
-
    setOutput('v5'+mode+'gradient',dc.v5K5*c.K5+dc.K5*c.v5K5);
+
      setOutput(a+mode+'gradient',dc[a]);
-
     setOutput('K5'+mode+'gradient',dc.K5);
+
     }
-
    setOutput('k8K7'+mode+'gradient',dc.k8K7);
+
-
    setOutput('k8'+mode+'gradient',dc.k8K7*c.K7+dc.K7*c.k8K7);
+
-
    setOutput('K7'+mode+'gradient',dc.K7);
+
-
    setOutput('tauBbeta4'+mode+'gradient',dc.tauBbeta4);
+
-
    setOutput('tauB'+mode+'gradient',(dc.tauBbeta4*c.beta4-dc.beta4*c.tauBbeta4)/Math.pow(c.beta4,2));
+
-
    setOutput('beta4'+mode+'gradient',dc.beta4);
+
   }
   }
}
}
Line 217: Line 230:
   var cSol = {};
   var cSol = {};
   for(var i in varsToMutate) cSol[varsToMutate[i]] = 1;
   for(var i in varsToMutate) cSol[varsToMutate[i]] = 1;
-
   cSol.v5K5 = orgC.v5/orgC.K5;
+
   cSol.v5_K5 = orgC.v5/orgC.K5;
-
   cSol.K5 = orgC.K5;
+
   cSol.v5 = orgC.v5;
-
  cSol.k8K7= orgC.k8/orgC.K7;
+
-
  cSol.K7 = orgC.K7;
+
   showOutputs('sol',computeCost(cSol,experiments),cSol);
   showOutputs('sol',computeCost(cSol,experiments),cSol);
Line 226: Line 237:
   var c = {};
   var c = {};
   for(var i in varsToMutate) c[varsToMutate[i]] = 1;
   for(var i in varsToMutate) c[varsToMutate[i]] = 1;
 +
  c.v5_K5 = orgC.v5/orgC.K5;
 +
  c.v5 = orgC.v5;
   var dc = {};
   var dc = {};
   for(var a in c) dc[a] = 0;
   for(var a in c) dc[a] = 0;
Line 232: Line 245:
   // Set up iteration
   // Set up iteration
-
   var numiter = 100000000;
+
   var numiter = 100000;
   var iter = 0;
   var iter = 0;
   var timer = setInterval(function(){
   var timer = setInterval(function(){
Line 259: Line 272:
     // Compute (decaying) "temperature" and accept new solution as current if it's not "too" bad
     // Compute (decaying) "temperature" and accept new solution as current if it's not "too" bad
     var T = 1 - (iter/numiter);
     var T = 1 - (iter/numiter);
-
     if (ENew<E || Math.exp((E-ENew)/(1e-3*T))>=Math.random()) {
+
     if (ENew<E || Math.exp((E-ENew)/(T))>=Math.random()) {
       c = cNew;
       c = cNew;
       E = ENew;
       E = ENew;

Revision as of 09:52, 2 October 2009

[http://2009.igem.org/Team:Groningen http://2009.igem.org/wiki/images/f/f1/Igemhomelogo.png]


TODO: Talk about the devices we have and in what way we want to characterize them.

Uptake measurements

Sampling scheme
Time (min)
0 10 20 40 60
As(III)exT(0)
(µM)
0 x
10 x x x x x
20 x
50 x
100 x

To efficiently look at both time and concentration dependent processes we took samples as in the table on the right. Below we list all results, which have been used for fitting all necessary parameters.

TODO: List results. Take conversion from nmol/mg and mg/ml to µM and Vc/Vs into account.

best cur gradient solved
v5/K5
v5
K5
k8/K7
k8
K7
tauBbeta4
tauB
beta4
tauR
beta1
E