/* * Modelling the Hypothalamic Control of Growth Hormone Secretion * * Model Status * * This particular CellML model describes the full (pituitary + * hypothalamic) model of the published article. The units have * been checked and are consistent, and the model runs in OpenCell * and COR to replicate the published results (as shown in figure * 12 of the paper). * * Model Structure * * Abstract: Here, we construct a mathematical model of the hypothalamic * systems that control the secretion of growth hormone (GH). The * work extends a recent model of the pituitary GH system, adding * representations of the hypothalamic GH-releasing hormone (GHRH) * and somatostatin neurones, each modelled as a single synchronised * unit. An unpatterned stochastic input drives the GHRH neurones * generating pulses of GHRH release that trigger GH pulses. Delayed * feedback from GH results in increased somatostatin release, * which inhibits both GH secretion and GHRH release, producing * an overall pattern of 3-h pulses of GH secretion that is very * similar to the secretory profile observed in male rats. Rather * than directly stimulating somatostatin release, GH feedback * triggers a priming effect, increasing releasable stores of somatostatin. * Varying this priming effect to reduce the effect of GH can reproduce * the less pulsatile form of GH release observed in the female * rat. The model behaviour is tested by comparison with experimental * observations with a range of different experimental protocols * involving GHRH injections and somatostatin and GH infusion. * * The complete original paper reference is cited below: * * Modelling the hypothalamic control of growth hormone secretion, * D. J. MacGregor and G. Leng, 2005, Journal of Neuroendocrinology, * volume 17, 788-803. PubMed ID: 16280026 * * model diagram * * [[Image file: macgregor_2005.png]] * * A schematic diagram of the different components and connections * in the growth hormone secretory system. Somatostatin (SOM) inhibits * the secretion of both growth hormone-releasing hormone (GHRH) * and growth hormone (GH). After a delay, GH feeds back to prime * the pool of releasable somatostatin, resulting in the bulk release * of somatostatin, which in turn allows further GHRH release and * and another burst of GH. */ import nsrunit; unit conversion on; // unit nanomolar predefined unit minute=60 second^1; unit first_order_rate_constant=.01666667 second^(-1); unit second_order_rate_constant=1.6666667E4 meter^3*second^(-1)*mole^(-1); unit flux=1.6666667E-8 meter^(-3)*second^(-1)*mole^1; unit per_nanomolar=1E6 meter^3*mole^(-1); math main { realDomain time minute; time.min=0; extern time.max; extern time.delta; real r(time) nanomolar; when(time=time.min) r=0.0; real ract(time) dimensionless; real hr(time) dimensionless; real Ir(time) flux; real Ir2(time) flux; real k6 first_order_rate_constant; k6=5.0; // Var below replaced by constant in model eqns to satisfy unit correction // real n1 dimensionless; // n1=4.0; real theta_1 nanomolar; theta_1=1.0; real n3 dimensionless; n3=5.0; real theta_3 dimensionless; theta_3=30.0; real s(time) nanomolar; when(time=time.min) s=0.0; real h_delta1(time) dimensionless; real j1 dimensionless; j1=10; real Is2 flux; Is2=50.0; real Is(time) flux; real k7 first_order_rate_constant; k7=5.0; real g(time) dimensionless; when(time=time.min) g=2.0; real se(time) nanomolar; when(time=time.min) se=0.0; real Ise flux; Ise=10.0; real f(time) dimensionless; when(time=time.min) f=0.3; real k1 second_order_rate_constant; k1=0.1; real k2 first_order_rate_constant; k2=0.002; real k3 first_order_rate_constant; k3=0.018; real phi_b_s(time) dimensionless; real sb dimensionless; sb=0.029; real delta_b dimensionless; delta_b=0.3; real c nanomolar; c=0.01; real h(time) nanomolar; when(time=time.min) h=0.0; real k4 first_order_rate_constant; k4=0.5; real k5 first_order_rate_constant; k5=71.0; real phi_r_s(time) dimensionless; real sr dimensionless; sr=-0.56; real delta_r dimensionless; delta_r=0.2; real k8 first_order_rate_constant; k8=0.07; real g1 first_order_rate_constant; g1=1.0; real gmax dimensionless; gmax=5.0; real g2 per_nanomolar; g2=0.008; real hact(time) dimensionless; real n2 dimensionless; n2=2.0; real theta_2 dimensionless; theta_2=30.0; real h_delta(time) dimensionless; real hh(time) nanomolar; when(time=time.min) hh=0.0; real Ih flux; Ih=50.0; real delta per_nanomolar; delta=60.0; real delta1 per_nanomolar; delta1=15.0; // // r:time=(ract*hr*Ir-k6*r+Ir2); ract=(1-s^4/(s^4+theta_1^4)); hr=(1-h_delta1^n3/(h_delta1^n3+(j1*theta_3)^n3)); Ir=(if ((time>=(0 minute)) and (time<=(90 minute))) (0 flux) else if ((time>=(91 minute)) and (time<=(92 minute))) (10 flux) else if ((time>=(93 minute)) and (time<=(113 minute))) (0 flux) else if ((time>=(114 minute)) and (time<=(115 minute))) (10 flux) else if ((time>=(116 minute)) and (time<=(136 minute))) (0 flux) else if ((time>=(137 minute)) and (time<=(138 minute))) (10 flux) else if ((time>=(139 minute)) and (time<=(159 minute))) (0 flux) else if ((time>=(160 minute)) and (time<=(161 minute))) (10 flux) else if ((time>=(162 minute)) and (time<=(252 minute))) (0 flux) else if ((time>=(253 minute)) and (time<=(254 minute))) (10 flux) else if ((time>=(255 minute)) and (time<=(275 minute))) (0 flux) else if ((time>=(276 minute)) and (time<=(277 minute))) (10 flux) else if ((time>=(278 minute)) and (time<=(298 minute))) (0 flux) else if ((time>=(299 minute)) and (time<=(300 minute))) (10 flux) else if ((time>=(301 minute)) and (time<=(321 minute))) (0 flux) else if ((time>=(322 minute)) and (time<=(323 minute))) (10 flux) else (0 flux)); Ir2=(if ((time>=(0 minute)) and (time<=(5 minute))) (0 flux) else if ((time>=(6 minute)) and (time<=(7 minute))) (1E3 flux) else if ((time>=(8 minute)) and (time<=(12 minute))) (0 flux) else if ((time>=(13 minute)) and (time<=(14 minute))) (1E3 flux) else if ((time>=(15 minute)) and (time<=(21 minute))) (0 flux) else if ((time>=(22 minute)) and (time<=(23 minute))) (1E3 flux) else if ((time>=(24 minute)) and (time<=(204 minute))) (0 flux) else if ((time>=(205 minute)) and (time<=(206 minute))) (1E3 flux) else if ((time>=(207 minute)) and (time<=(217 minute))) (0 flux) else if ((time>=(218 minute)) and (time<=(219 minute))) (1E3 flux) else if ((time>=(220 minute)) and (time<=(227 minute))) (0 flux) else if ((time>=(228 minute)) and (time<=(229 minute))) (1E3 flux) else if ((time>=(230 minute)) and (time<=(310 minute))) (0 flux) else if ((time>=(311 minute)) and (time<=(312 minute))) (1E3 flux) else if ((time>=(313 minute)) and (time<=(321 minute))) (0 flux) else if ((time>=(322 minute)) and (time<=(323 minute))) (1E3 flux) else (0 flux)); // s:time=(Is*g-k7*s+Is2); // se:time=(Ise-k7*se); // f:time=((-1)*(k1*(r+c)*f)+(k2+k3*phi_b_s)*(1-f)); phi_b_s=(1/(1+exp((-1)*(log((1 per_nanomolar)*(s+se))-sb)/delta_b))); // h:time=(j1*((k4+k5*(1-phi_r_s))*((r+c)*f)-k8*h)); phi_r_s=(1/(1+exp((-1)*(log((1 per_nanomolar)*(s+se))-sr)/delta_r))); // g:time=(g1*hact*((gmax-g)/gmax)-g2*Is*g); hact=(h_delta^n2/(h_delta^n2+(j1*theta_2)^n2)); // hh:time=(j1*(Ih-k8*hh)); // h_delta=((h+hh)*delta); h_delta1=((h+hh)*delta1); Is=(if ((time>(0 minute)) and (time<=(90 minute))) (10 flux) else if ((time>(90 minute)) and (time<=(180 minute))) (0 flux) else if ((time>(180 minute)) and (time<=(270 minute))) (10 flux) else if ((time>(270 minute)) and (time<=(360 minute))) (0 flux) else (0 flux)); }