Team:Groningen/Modelling/model/calc.js

From 2009.igem.org

Revision as of 12:23, 3 September 2009 by Annelies (Talk | contribs)

function calc(){

 //  gets input
 var growthFactorNode = document.getElementById("growthFactor");
 // reads input
 var growthFactor = Number(growthFactorNode.value); 
 
 // begin variable
 var time = 0;
 var x = 0;
 var y = 0;
 arrValueX = new Array();
 arrValueY = new Array();


 // process
 var growthFactor = growthFactor + 1;
 for (var time = 0; time < 30; time++) {
   var y = growthFactor*x*x;
   var x = x + 1;
   arrValueX.push(x);
   arrValueY.push(y);
 }
 
 // Set outputs
 setOutput(growthFactorAnswer, growthFactor ); 
 document.getElementById('modelDataGraph').refresh();

}


function setOutput(node,v) {

 node.innerHTML = formatNumberToHTML(v);
 node.value = v;

}


function formatNumberToHTML(v,p) {

 if (p===undefined) p = 5;
 return v.toPrecision(p)
         .replace(/e\+([0-9]+)$/i,'·10$1')
         .replace(/e\-([0-9]+)$/i,'·10-$1');

}


// ------ Annelies timer functie ---------

var mijnTimer;

function tijd(){

 //  gets input
 var timeMiliSecNode = document.getElementById("timeMiliSec");
 // reads input
 var timeMiliSec2 = Number(timeMiliSecNode.value); 
 //alert("functie tijd: "+timeMiliSec2);
 if (mijnTimer) clearInterval(mijnTimer);
 mijnTimer = setInterval( "doSomething()",timeMiliSec2);

}

function doSomething(){

   //alert("functie doe iets BOVEN DE IF LUS: "+doSomething.time);
   if (doSomething.time === undefined) {
     doSomething.time = 0;
     
     //alert("functie doe ietsFDBADFNA: "+doSomething.time);
   }
   // Set outputs
   setOutput(tijdAnswer, doSomething.time);
   doSomething.time += 1;
  
   transport();

}



// -------- transport model, geeft waarden mee in een object/array ----------


function transport(){

// variablen
 var data = {time: [0],
             AsIn: [0],
             ArsB: [5],
             AsEx: [5],
             GlpF: [5],
             GlpFAs: [0],
             ArsBAs: [0]};

// constanten

 var totalTime = 300;
 var stepSize = 0.1;
 var K5on = 1;
 var K5off = 1e-6;
 var K6 = 1e-3;
 var Vc = 1.1 - 0.0073;
 var Vs = 0.0073;
 var K7on = 1;
 var K7off = 1e-6;
 var K8 = 1e-3;


 var N = totalTime / stepSize ;
 for (var i=1;i<=N;i++){
   data.GlpFAs[i] = data.GlpFAs[i-1] + stepSize * (K5on * data.AsEx[i-1] * data.GlpF[i-1] - (K5off + K6) * data.GlpFAs[i-1]);
   data.AsEx[i] = data.AsEx[i-1] + stepSize * (-K5on * data.AsEx[i-1] * data.GlpF[i-1] + K5off * data.GlpFAs[i-1] + (Vc/Vs) * K8 * data.ArsBAs[i-1]);
   data.GlpF[i] = data.GlpF[i-1] + stepSize * (-(K5on * data.AsEx[i-1] * data.GlpF[i-1] - (K5off + K6) * data.GlpFAs[i-1]));
   data.ArsBAs[i] = data.ArsBAs[i-1] + stepSize * (K7on * data.AsIn[i-1] * data.ArsB[i-1] - (K7off+K8) * data.ArsBAs[i-1]);
   data.AsIn[i] = data.AsIn[i-1] + stepSize * (-K7on * data.AsIn[i-1] * data.ArsB[i-1] - (K7off + K8) * data.ArsBAs[i-1] - K8 * data.ArsBAs[i-1] + (Vs/Vc) * K6 * data.GlpFAs[i-1]);
   data.ArsB[i] = data.ArsB[i-1] + stepSize * (-(K7on * data.AsIn[i-1] * data.ArsB[i-1] - (K7off + K8) * data.ArsBAs[i-1]));
   data.time[i] = data.time[i-1] + stepSize;
 }
 setOutput(ModelAnswer, data.AsEx[4]); 
 var modelDataNode = document.getElementById("modelData");
 modelDataNode.data = data;
 document.getElementById("modelDataGraph").refresh();

}


// ------- het gehele model -------------------------------------------


function modelTotal(){

 alert("modelTotal");
 // Definieren van begincondities dit zijn dus constanten die later niet gebruikt worden
 //Begincondities (op tijdstip nul) die in het 0-de element van een array moeten worden gezet.
 
// variablen
 var dataBegin = {AsexT:  [5],
            ArsBas: [0],
            GlpFas: [0],
            GlpFT:  [5],
            ArsBT:  [5],
            AsinT:  [0],
            ars1T:  [5],
            ars2T:  [5],
            pro:    [5],
            ArsRT:  [5],
            GV:     [0],
            Time:   [0]};
 alert("hah" +pro[0]);


} // end function