// Created by libAntimony v2.8.0
function goldbeter_koshland(v1, v2, J1, J2)
(2*v1*J2)/(v2 - v1 + J1*v2 + J2*v1 + ((v2 - v1 + J1*v2 + J2*v1)^2 - 4*(v2 - v1)*v1*J2)^(1/2));
end
model *Tyson2003_Activator_Inhib_Oscillator()
// Compartments and Species:
compartment env;
species R in env, X in env, $S in env, $E in env, $Ep in env;
// Assignment Rules:
E := Et - Ep;
Ep := goldbeter_koshland(k3*R, k4, J3, J4)*Et;
Km3 := J3*Et;
Km4 := J4*Et;
// Reactions:
r0: => R; env*k0*Ep;
r1: => R; env*k1*S;
r2: R => ; env*k2*R;
r2_prime: R => ; env*k2_prime*R*X;
r3: $E => $Ep; (env*k3*R*E)/(Km3 + E);
r4: $Ep => $E; (env*k4*Ep)/(Km4 + Ep);
r5: => X; env*k5*R;
r6: X => ; env*k6*X;
// Species initializations:
R = 0;
X = 0;
S = 0;
// Compartment initializations:
env = 1;
// Variable initializations:
Et = 1;
Et has M;
k3 = 1;
k3 has per_s;
k4 = 1;
k4 has M_per_s;
J3 = 0.3;
J3 has dimensionless;
J4 = 0.3;
J4 has dimensionless;
k0 = 4;
k0 has per_s;
k1 = 1;
k1 has per_s;
k2 = 1;
k2 has per_s;
k2_prime = 1;
k2_prime has per_M_per_s;
k5 = 0.1;
k5 has per_s;
k6 = 0.075;
k6 has per_s;
Km3 has M;
Km4 has M;
// Other declarations:
var Km3, Km4;
const env, Et, k3, k4, J3, J4, k0, k1, k2, k2_prime, k5, k6;
// Unit definitions:
unit time_unit = second;
unit substance = mole;
unit per_s = 1 / second;
unit M_per_s = mole / (second * litre);
unit M = mole / litre;
unit per_M_per_s = litre / (mole * second);
// Display Names:
time_unit is "s";
substance is "mole";
end