Team:Groningen/Modelling/model/calc.js
From 2009.igem.org
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 ---------
function tijd(){
// gets input var timeMiliSecNode = document.getElementById("timeMiliSec"); // reads input var timeMiliSec2 = Number(timeMiliSecNode.value);
alert("functie tijd: "+timeMiliSec);
setTimeout( "doSomething(timeMiliSec2)",timeMiliSec2);
}
function doSomething(timeMiliSec2){
alert("functie doe iets BOVEN DE IF LUS: "+doSomething.time);
if (doSomething.time === undefined) {
// reads input var timeMili = Number(timeMiliSec2);
doSomething.time = timeMili; alert("functie doe iets: "+timeMili); alert("functie doe ietsFDBADFNA: "+doSomething.time); }
// Set outputs setOutput(tijdAnswer, doSomething.time); doSomething.time += timeMili; transport() // if (doSomething.time <= timeMili * 30) setTimeout( "doSomething()", timeMili);
}
// -------- 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();
}