/* * Modeling robust oscillatory behavior of the hypothalamic-pituitary-adrenal * axis * * Model Status * * This CellML model runs in OpenCell, PCEnv and COR, and the units * are consistent throughout. The model does not quite recreate * the published results (although the output is similar), part * of the reason for this might be that the original model uses * reset rules to define injections of additional hormones, which * is not a supported feature in CellML at present. * * Model Structure * * ABSTRACT: A mathematical model of the hypothalamic-pituitary-adrenal * (HPA) axis of the human endocrine system is proposed. This new * model provides an improvement over previous models by introducing * two nonlinear factors with physiological relevance: 1) a limit * to gland size; 2) rejection of negative hormone concentrations. * The result is that the new model is by far the most robust; * e.g., it can tolerate at least -50% and +100% perturbations * to any of its parameters. This high degree of robustness allows * one, for the first time, to model features of the system such * as circadian rhythm and response to hormone injections. In addition, * relative to its closest predecessor, the model is simpler; it * contains only about half of the parameters, and yet achieves * more functions. The new model provides opportunities for teaching * endocrinology within a biological or medical school context; * it may also have applications in modeling and studying HPA axis * disorders, for example, related to gland size dynamics, abnormal * hormone levels, or stress influences. * * model diagram * * [[Image file: kyrylov_2005.png]] * * Schematic diagram of the hypothalamus-pituitary-adrenal (HPA) * axis. Stimulatory and inhibitory paths are indicated by the * arrows and + or - signs respectively. CRH represents corticotropin-releasing * hormone, ACTH is corticotropin, and CBG represents corticosteroid-binding * globulin. * * The original paper reference is cited below: * * Modeling robust oscillatory behavior of the hypothalamic-pituitary-adrenal * axis, Vadim Kyrylov, Liudmila A. Severyanova, and Amandio Vieira, * 2005, IEEE Transactions on Biomedical Engineering, 52, 1977-1983. * PubMed ID: 16366221 */ import nsrunit; unit conversion on; unit minute=60 second^1; unit hour=3600 second^1; unit microg_l_min=.01666667 second^(-1); unit first_order_rate_constant=.01666667 second^(-1); math main { realDomain time minute; time.min=0; extern time.max; extern time.delta; real y0(time) dimensionless; when(time=time.min) y0=0.4; real g0(time) dimensionless; real r0(time) dimensionless; real h0(time) dimensionless; real S0 dimensionless; S0=0.010; real y2(time) dimensionless; when(time=time.min) y2=1.17; real a00 dimensionless; a00=-0.00843; real a02 dimensionless; a02=-0.440; real c0 first_order_rate_constant; c0=0.443; real e0 first_order_rate_constant; e0=0.0; real epsilon dimensionless; epsilon=0.50; real y1(time) dimensionless; when(time=time.min) y1=1.4; real g1(time) dimensionless; real r1(time) dimensionless; real h1(time) dimensionless; real S1 dimensionless; S1=0.010; real a10 dimensionless; a10=0.082; real a12 dimensionless; a12=-0.0668; real a11 dimensionless; a11=-0.0040; real e1 first_order_rate_constant; e1=0.0; real g2(time) dimensionless; real r2(time) dimensionless; real h2(time) dimensionless; real S2 dimensionless; S2=0.010; real y3(time) dimensionless; when(time=time.min) y3=0.95; real y4(time) dimensionless; when(time=time.min) y4=0.65; real a23 dimensionless; a23=0.0576; real a24 dimensionless; a24=3.25E-4; real a20 dimensionless; a20=0.0; real a21 dimensionless; a21=0.0310; real a22 dimensionless; a22=-0.0957; real e2 first_order_rate_constant; e2=0.0; real g3(time) dimensionless; real r3(time) dimensionless; real h3(time) dimensionless; real S3 dimensionless; S3=0.010; real a32 dimensionless; a32=0.00869; real a33 dimensionless; a33=-0.00857; real g4(time) dimensionless; real r4(time) dimensionless; real h4(time) dimensionless; real S4 dimensionless; S4=0.010; real a42 dimensionless; a42=1.39E-4; real a44 dimensionless; a44=-1.43E-4; // // y0:time=((1 first_order_rate_constant)*g0+c0+e0); g0=(h0*r0); h0=(if ((a00*y0+a02*y2)>0) (a00*y0+a02*y2)/(1+(a00*y0+a02*y2)/S0*(1-exp((-1)*((a00*y0+a02*y2)/S0)))) else if ((a00*y0+a02*y2)<=0) a00*y0+a02*y2 else 0); r0=(if ((y0 y1:time=((1 first_order_rate_constant)*g1+e1); g1=(h1*r1); h1=(if ((a10*y0+a11*y1+a12*y2)>0) (a10*y0+a11*y1+a12*y2)/(1+(a10*y0+a11*y1+a12*y2)/S1*(1-exp((-1)*((a10*y0+a11*y1+a12*y2)/S1)))) else if ((a10*y0+a11*y1+a12*y2)<=0) a10*y0+a11*y1+a12*y2 else 0); r1=(if ((y1 y2:time=((1 first_order_rate_constant)*g2+e2); g2=(h2*r2); h2=(if ((a20*y0+a21*y1+a22*y2+a23*y3+a24*y4)>0) (a20*y0+a21*y1+a22*y2+a23*y3+a24*y4)/(1+(a20*y0+a21*y1+a22*y2+a23*y3+a24*y4)/S2*(1-exp((-1)*((a20*y0+a21*y1+a22*y2+a23*y3+a24*y4)/S2)))) else if ((a20*y0+a21*y1+a22*y2+a23*y3+a24*y4)<=0) a20*y0+a21*y1+a22*y2+a23*y3+a24*y4 else 0); r2=(if ((y2 y3:time=((1 first_order_rate_constant)*g3); g3=(h3*r3); h3=(if ((a32*y2+a33*y3)>0) (a32*y2+a33*y3)/(1+(a32*y2+a33*y3)/S3*(1-exp((-1)*((a32*y2+a33*y3)/S3)))) else if ((a32*y2+a33*y3)<=0) a32*y2+a33*y3 else 0); r3=(if ((y3 y4:time=((1 first_order_rate_constant)*g4); g4=(h4*r4); h4=(if ((a42*y2+a44*y4)>0) (a42*y2+a44*y4)/(1+(a42*y2+a44*y4)/S4*(1-exp((-1)*((a42*y2+a44*y4)/S4)))) else if ((a42*y2+a44*y4)<=0) a42*y2+a44*y4 else 0); r4=(if ((y4 }