From 2009.igem.org
(Difference between revisions)
|
|
Line 140: |
Line 140: |
| | | |
| function modelTotal(){ | | function 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.
| |
- | var data = { AsexT: [5],
| |
- | ArsBas: [0],
| |
- | GlpFas: [0],
| |
- | GlpFT: [5],
| |
- | ArsBT: [5],
| |
- | AsinT: [0],
| |
- | ars1T: [5],
| |
- | ars2T: [5],
| |
- | pro: [5],
| |
- | ArsRT: [5],
| |
- | GV: [0],
| |
- | Time: [0]};
| |
| | | |
- | // Begincondities die constantes blijven
| + | alert("huh"); |
- | var Vc = 10;
| + | |
- | var Timestep = 10;
| + | |
- | var N = Time/Timestep; // dit gaat niet goed!! je kunt niet delen door de gehele array misschien een totaltime ofzo gebruiken
| + | |
- | var Vs = 10;
| + | |
- | var k8 = 10;
| + | |
- | var v5 = 10;
| + | |
- | var tauG = 10;
| + | |
- | var tauB = 10;
| + | |
- | var tauR = 10;
| + | |
- | var Beta5 = 10;
| + | |
- | var Beta4 = 10;
| + | |
- | var Beta3 = 10;
| + | |
- | var Beta1 = 10;
| + | |
- | var K3d = 0,33; // micromolair;
| + | |
- | var K1d = K3d/10;
| + | |
| | | |
- | //Er komen nog een hoop nieuwe variabelen aan stop ze tenzij anders aangegeven allemaal in een Array
| |
- | //We stoppen nu het gehele programma in een loop (Ik doe een forloop, je moet zelf maar kijken wat het handigst is.)
| |
- | var TOL = 10^-6;
| |
- | var getal = 500;
| |
- | var Yvalue = getal > TOL; // is dit een if lus??? of zomaar iets om een waarde aan y te geven??
| |
- |
| |
- |
| |
- |
| |
- | var dataEndConcentrations = { ArsB: [0],
| |
- | Asin: [0],
| |
- | ArsR: [0],
| |
- | ars: [0],
| |
- | GlpF: [0],
| |
- | ArsRas:[0],
| |
- | Asex: [0]};
| |
| | | |
- | for(var i = 1 ; i < N ; i++) {
| + | } // end function |
- | //We passen nu eerst Newton's methode toe
| + | |
- | // Eerst maken we een Array X met de Afschatting van de variabelen
| + | |
- |
| + | |
- | // heb nu de waarden genomen van uit de array's en die in de tmp array x gezet.
| + | |
- |
| + | |
- | var x =new Array(6);
| + | |
- | x[0] = ArsBT[i]/2; //(ArsB)
| + | |
- | x[1] = Asex[i]/10; // Asin // zit nog niks in asex dus kun je ook niet delen
| + | |
- | x[2] = ArsRT[i]/3; // ArsR
| + | |
- | x[3] = ArsRT[i]/3; // ars
| + | |
- | x[4] = GlpF[i]/2; // GlpF // zit nog niks in GLPF dus kun je ook niet delen
| + | |
- | x[5] = ArsRT[i]/3; // ArsRas
| + | |
- | x[6] = Asex[i]/2; // Asex // zit nog niks in asex dus kun je ook niet delen
| + | |
- |
| + | |
- | | + | |
- | //Nu maken we weer een forloop aan
| + | |
- | for ( var j = 1; j <= N && Yvalue>TOL; j++) {
| + | |
- |
| + | |
- | // variabelen ??
| + | |
- | var K7 = 10;
| + | |
- |
| + | |
- |
| + | |
- | var f =new Array(6); // als het een functie moet zijn, dan moet het vast anders gedifineerd worden
| + | |
- | f[0] = ((ArsBT[i] * K7) / (x[1] + K7)) - x[0]
| + | |
- | f[1] = ((AsinT[i]) / (1 + (x[2] / K1d) + (x[0]) / K7))) - X[1];
| + | |
- | F[2] = ((ArsRT[i]) / (1 + (x[1] / K1d) + (2 * x[2] * x[3] / K3d))) - x[2];
| + | |
- | F[3] = ((K3d) / (x[2]^2 + K3d)) - x[3] ;
| + | |
- | F[4] = ((GlpFT[i] * K5) / (x(6) + K5)) - x[4];
| + | |
- | F[5] = ((ARsRT[i] * x[1] / K1d) / (1 + (x[1] / K1d) + (2 * x[2] * x[3] / K3d))) - x[5];
| + | |
- | F[6] = ((AsexT[i] * K5) / (K5 + x[4])) - x[6];
| + | |
- |
| + | |
- |
| + | |
- | // matrix: http://www.iterasi.net/openviewer.aspx?sqrlitid=pvgcg4m2ike_hwifjguc5a geen idee hoe het er weer uit moet drm, array in array
| + | |
- |
| + | |
- | //Hierna maken we een Matrix 7x7 matrix J aan
| + | |
- | var matrix = new Array(7);
| + | |
- | j[0] = new Array(7);
| + | |
- | j[1] = new Array(7);
| + | |
- | j[2] = new Array(7);
| + | |
- | j[3] = new Array(7);
| + | |
- | j[4] = new Array(7);
| + | |
- | j[5] = new Array(7);
| + | |
- | j[6] = new Array(7);
| + | |
- | j[7] = new Array(7);
| + | |
- |
| + | |
- | j[1][1] = -1; j[1][2] = 0; j[1][3] = 0; j[1][4] = 0; j[1][5] = 0; j[1][6] = 0; j[1][7] = 0;
| + | |
- | j[2][1] = 0; j[2][2] = -1; j[2][3] = 0; j[2][4] = 0; j[2][5] = 0; j[2][6] = 0; j[2][7] = 0;
| + | |
- | j[3][1] = 0; j[3][2] = 0; j[3][3] = (-2 * ((ArsRT) / (1 + (x[1] / K1d) + (2 * x[2] * x[3] / K3d))^2) - 1); j[3][4] = 0; j[3][5] = 0; j[3][6] = 0; j[3][7] = 0;
| + | |
- | j[4][1] = 0; j[4][2] = 0; j[4][3] = 0; j[4][4] = -1; j[4][5] = 0; j[4][6] = 0; j[4][7] = 0;
| + | |
- | j[5][1] = 0; j[5][2] = 0; j[5][3] = 0; j[5][4] = 0; j[5][5] = -1; j[5][6] = 0; j[5][7] = 0;
| + | |
- | j[6][1] = 0; j[6][2] = 0; j[6][3] = 0; j[6][4] = 0; j[6][5] = 0; j[6][6] = -1; j[6][7] = 0;
| + | |
- | j[7][1] = 0; j[7][2] = 0; j[7][3] = 0; j[7][4] = 0; j[7][5] = 0; j[7][6] = 0; j[7][7] = -1;
| + | |
- |
| + | |
- | //Nu maken we een Array Y aan
| + | |
- | var y =new Array(6);
| + | |
- | y[0] = f[0]/ j[1][1];
| + | |
- | y[1] = f[1]/ j[2][2];
| + | |
- | y[2] = f[2]/ j[3][3];
| + | |
- | y[3] = f[3]/ j[4][4];
| + | |
- | y[4] = f[4]/ j[5][5];
| + | |
- | y[5] = f[5]/ j[6][6];
| + | |
- | y[6] = f[6]/ j[7][7];
| + | |
- |
| + | |
- |
| + | |
- | // Math.abs om de Y waarden zetten (bijv. Math.abs(Y(0)))
| + | |
- | Yvalue = Math.abs(Y[0]) + Math.abs(Y[1]) + Math.abs(Y[2]) + Math.abs(Y[3]) + Math.abs(Y[4]) + Math.abs(Y[5]) + Math.abs(Y[6]);
| + | |
- | | + | |
- |
| + | |
- |
| + | |
- | for ( i = 0 ; i <= 6 ; i++) {
| + | |
- | x[i] = x[i] + y[i];
| + | |
- | }
| + | |
- | }
| + | |
- |
| + | |
- | if(x[0]>0){
| + | |
- | ArsB[i] = x[0];
| + | |
- | }esle{
| + | |
- | ArsB[i]= 0;
| + | |
- | }
| + | |
- |
| + | |
- | if(x[1]>0){
| + | |
- | Asin[i] = x[1];
| + | |
- | }esle{
| + | |
- | Asin[i] = 0;
| + | |
- | }
| + | |
- |
| + | |
- | if(X(2)>0){
| + | |
- | ArsR[i] = x[2];
| + | |
- | }esle{
| + | |
- | ArsR[i] = 0;
| + | |
- | }
| + | |
- |
| + | |
- | if(X(3)>0){
| + | |
- | ars[i] = x[3];
| + | |
- | }esle{
| + | |
- | ars[i] = 0;
| + | |
- | }
| + | |
- |
| + | |
- | if(X(4)>0){
| + | |
- | GlpF[i] = x[4];
| + | |
- | }esle{
| + | |
- | GlpF[i] = 0;
| + | |
- | }
| + | |
- |
| + | |
- | if(x[5]>0){
| + | |
- | ArsRas[i] = x[5];
| + | |
- | }esle{
| + | |
- | ArsRas[i] = 0;
| + | |
- | }
| + | |
- |
| + | |
- | if(X(6)>0){
| + | |
- | Asex[i] = x[6];
| + | |
- | }esle{
| + | |
- | Asex[i] = 0;
| + | |
- | }
| + | |
- |
| + | |
- |
| + | |
- | var data2 = {
| + | |
- | ars1: [0],
| + | |
- | ars2: [0],
| + | |
- | ArsBas: [0],
| + | |
- | GlpFas: [0], // ookal bovenin gedifineerd, is het dezelfde of een andere
| + | |
- | arsT: [0],
| + | |
- | ArsRars:[0],
| + | |
- | Asex: [0], // ookal bovenin gedifineerd, is het dezelfde of een andere
| + | |
- | k6: [0]}; // is dit ook een array?? blijft deze niet gewoon een vaste snelheid houden??
| + | |
- | | + | |
- | //Nu gaan we verdere variabelen opstellen ook deze moeten weer in Array's komen te staan
| + | |
- | k6[i] = (v5 * Vc) / (GlpFT[i] * Vs);
| + | |
- | ars1[i] = (ars1T[i] * K3d) /(K3d + ArsR[i]^2);
| + | |
- | if(ars1[i])<0){
| + | |
- | ars1[i] = 0;
| + | |
- | }
| + | |
- | ars2[i] = (ars2T[i] * K3d) /(K3d + ArsR[i]^2);
| + | |
- | if(ars2[i]<0){
| + | |
- | ars2[i] = 0;
| + | |
- | }
| + | |
- | ArsBas[i] = ArsBT[i] - ArsB[i];
| + | |
- | if(ArsBas[i]<0){
| + | |
- | ArsBas[i] = 0;
| + | |
- | }
| + | |
- | GlpFas[i] = GlpFT[i] - GlpF[i];
| + | |
- | if(GlpFas[i]<0){
| + | |
- | GlpFas[i] = 0;
| + | |
- | }
| + | |
- | arsT[i] = ars1T[i] + ars2T[i];
| + | |
- | if(arsT[i]<0){
| + | |
- | arsT[i] = 0;
| + | |
- | }
| + | |
- | ArsRars[i] = arsT(i) - ars(i);
| + | |
- | if(ArsRars[i]<0){
| + | |
- | ArsRars[i] = 0;
| + | |
- | }
| + | |
- | Asex[i] = AsexT[i] - GlpFas[i];
| + | |
- | if(Asex[i]<0){
| + | |
- | Asex[i] = 0;
| + | |
- | }
| + | |
- | | + | |
- | //We gaan nu met Eulers methode de volgende slag voorbereiden
| + | |
- | AsexT[i+1] = AsexT[i] + Timestep((Vc/Vs)*k8*ArsBas[i]-k6*GlpFas[i]);
| + | |
- | if (AsexT [i+1]<0){
| + | |
- | AsexT[i+1] = 0;
| + | |
- | }
| + | |
- | GlpfT[i+1] = GlpfT[i];
| + | |
- | ArsBT[i+1] = ArsBT[i] + Timestep*(Beta4*ars1[i] - Ln[2]/(tauB * ArsB[i]));
| + | |
- | if (ArsBT[i+1]<0){
| + | |
- | ArsBT[i+1] = 0;
| + | |
- | }
| + | |
- | AsinT[i+1] = AsinT[i] + Timestep*((Vs/Vc)*k6*GlpFas[i]-k8*ArsBas[i]);
| + | |
- | if (AsinT[i+1]<0){
| + | |
- | AsinT[i+1] = 0;
| + | |
- | }
| + | |
- | ars1T[i+1] = ars1T[i];
| + | |
- | if (ars1T[i+1]<0){
| + | |
- | ars1T[i+1] = 0;
| + | |
- | }
| + | |
- | ars2T[i+1] = ars2T[i];
| + | |
- | if (ars2T[i+1]<0){
| + | |
- | ars2T[i+1] = 0;
| + | |
- | }
| + | |
- | pro[i+1] = pro[i];
| + | |
- | if (pro[i+1]<0){
| + | |
- | pro[i+1] = 0;
| + | |
- | }
| + | |
- | ArsRT[i+1] = ArsRT[i] + Timestep(Beta1*ars1[i] + Beta3*pro[i] - (ln[2]/tauR)*ArsR[i]);
| + | |
- | if (ArsRT[i+1]<0){
| + | |
- | ArsRT[i+1] = 0;
| + | |
- | }
| + | |
- | GV[i+1] = GV[i] + Timestep(Beta5*ars2[i] - ln[2]*tauG*GV[i])
| + | |
- | if (GV[i+1]<0){
| + | |
- | GV[i+1] = 0;
| + | |
- | }
| + | |
- | Time[i+1] = Time[i] + Timestep;
| + | |
- | if (Time[i+1]<0){
| + | |
- | Time[i+1] = 0;
| + | |
- | }
| + | |
- | }
| + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | }
| + | |
Revision as of 12:04, 3 September 2009
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(){
alert("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("huh");
} // end function