/* * Modelling Human Gastric Acid Secretion * * Model Status * * This is the original unchecked version of the model imported * from the previous CellML model repository, 24-Jan-2006. * * Model Structure * * Acid secretion from parietal cells in the stomach is a highly * regulated, complex, and dynamic process which is optimised to * facilitate food digestion. It involves both the central and * the enteric nervous systems (CNS and ENS respectively), in addition * to a network of paracrine and endocrine cells. The overall aim * is to maintain stomach luminal pH within a narrow range such * that food digestion is optimised. * * Four cell populations and their secretory products form the * core acid secretory process in humans. These four cell populations * are gastrin (G)- and somatostatin (D)-secreting cells, endochromaffin-like * (ECL) cells, and parietal cells. G and ECL cell products stimulate * acid secretion (positive feedback) and D cells inhibit acid * release (negative feedback). Exactly how these feedback loops * interact is species specific, however, the basic requirement * for acid secretion is conserved amongst species. Mathematical * modelling provides a powerful tool for investigating the integrated * system, and it is also immune to the inconsistencies of in vivo * and in vitro experimental studies. * * * * In the Joseph et al. 2003 publication described here, the authors * use a novel mathematical model to describe the complex system * of gastric acid regulation (see and below). They use experimental * data to validate their model simulations, and then go onto use * the model to study conditions that are not yet experimentally * reproducible. * * The model has been described here in CellML (the raw CellML * description of the Joseph et al. 2003 model can be downloaded * in various formats as described in ). * * The complete original paper reference is cited below: * * A model for integrative study of human gastric acid secretion, * Ian M.P. Joseph, Yana Zavros, Juanita L. Merchant, and Denise * Kirschner, 2003, Journal of Applied Physiology , 94, 1602-1618. * PubMed ID: 12433865 * * cell diagram1 * * [[Image file: joseph_2003.png]] * * Development of G, D, ECL, and parietal cells from the underlying * antral and corpus stem cells. A: differentiation within the * antrum and B: differentiation within the corpus. */ import nsrunit; // Warning: unit conversion turned off due to unit errors in 22 equation(s) unit conversion off; unit hour=3600 second^1; unit first_order_rate_constant=2.7777778E-4 second^(-1); // unit molar predefined unit cell = fundamental; unit molar_per_hour_cell=.27777778 meter^(-3)*second^(-1)*mole^1*cell^(-1); math main { //Warning: the following variables were set 'extern' or given // an initial value of '0' because the model would otherwise be // underdetermined: Asc, C_Asc, gamma_Asc, T_Asc, Csc, C_Csc, // gamma_Csc, alpha_Csc, gmax, GtnC, T_Csc, G, k_gmax, gamma_Gc, // AC, Fd, gamma_Fdmax, alpha_Fd, DA, k_dmax, gamma_DA, DC, gamma_DC, // E, k_Emax, gamma_E, alpha_E, P, gamma_P, f, N_, GtnA, KFG, kAG, // kG, SA, NC, NE, kappa_G, kappa_S, AA, SC, HC, kappa_H, k_Fdmax, // BC, hb, kappa_A, k_BCmax, beta_B, alpha_NB, BA, k_BAmax, kappa_B, // Nmax1, kAN1, kappa_NC, Bas1, kFd, Nmax2, kAN2, kappa_NE, Bas2 realDomain time hour; time.min=0; extern time.max; extern time.delta; real Asc(time) cell; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) Asc=0; extern real C_Asc first_order_rate_constant; extern real gamma_Asc first_order_rate_constant; real pG(time) first_order_rate_constant; real pDA(time) first_order_rate_constant; extern real T_Asc first_order_rate_constant; real Csc(time) cell; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) Csc=0; extern real C_Csc cell; extern real gamma_Csc first_order_rate_constant; extern real alpha_Csc first_order_rate_constant; extern real gmax first_order_rate_constant; real GtnC(time) molar; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) GtnC=0; real pE(time) first_order_rate_constant; real pDC(time) first_order_rate_constant; real pP(time) first_order_rate_constant; extern real T_Csc first_order_rate_constant; real G(time) cell; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) G=0; extern real k_gmax first_order_rate_constant; extern real gamma_Gc first_order_rate_constant; real AC(time) molar; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) AC=0; extern real Fd first_order_rate_constant; real alpha_HA molar; alpha_HA=2.0E-8; extern real gamma_Fdmax first_order_rate_constant; extern real alpha_Fd first_order_rate_constant; real DA(time) cell; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) DA=0; extern real k_dmax first_order_rate_constant; extern real gamma_DA first_order_rate_constant; real DC(time) cell; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) DC=0; extern real gamma_DC first_order_rate_constant; real E(time) first_order_rate_constant; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) E=0; extern real k_Emax first_order_rate_constant; extern real gamma_E first_order_rate_constant; extern real alpha_E first_order_rate_constant; real P(time) cell; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) P=0; extern real gamma_P first_order_rate_constant; extern real f dimensionless; extern real N_ cell; real GtnA(time) molar; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) GtnA=0; real KNG1 molar_per_hour_cell; KNG1=6.28E-17; real KNG2 molar_per_hour_cell; KNG2=8.75E-17; extern real KFG first_order_rate_constant; extern real kAG molar; real kSG molar; kSG=9.0E-11; extern real kG first_order_rate_constant; real alpha_NG1 molar; alpha_NG1=1.0E-10; real alpha_NG2 molar; alpha_NG2=1.0E-10; real beta_G first_order_rate_constant; beta_G=1.5; real SA(time) molar; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) SA=0; real NC(time) first_order_rate_constant; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) NC=0; real NE(time) first_order_rate_constant; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) NE=0; extern real kappa_G molar_per_hour_cell; real KAS molar_per_hour_cell; KAS=8.04E-15; real alpha_AS molar; alpha_AS=0.05; extern real kappa_S molar_per_hour_cell; real alpha_NS molar; alpha_NS=6.28E-7; real kNS molar; kNS=1.0E-9; real kSS molar; kSS=9.0E-11; real KGS molar_per_hour_cell; KGS=2.54E-18; real AA(time) molar; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) AA=0; real SC(time) molar; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) SC=0; real KNS molar_per_hour_cell; KNS=1.14E-15; real alpha_GS molar; alpha_GS=5.20E-12; real HC(time) molar; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) HC=0; real KNH molar_per_hour_cell; KNH=7.59E-16; real KGH molar_per_hour_cell; KGH=7.77E-16; real kSH molar; kSH=9.0E-10; real alpha_GH molar; alpha_GH=3.0E-10; real alpha_NH molar; alpha_NH=3.25E-8; extern real kappa_H first_order_rate_constant; real KNA molar_per_hour_cell; KNA=2.33E-11; real KHA molar_per_hour_cell; KHA=7.96E-10; real KGA molar_per_hour_cell; KGA=4.98E-11; real kSA molar; kSA=9.0E-10; real alpha_NA molar; alpha_NA=5.0E-6; real alpha_GA molar; alpha_GA=1.8E-10; extern real k_Fdmax first_order_rate_constant; real beta_A first_order_rate_constant; beta_A=2.72; real BC(time) molar; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) BC=0; extern real hb first_order_rate_constant; extern real kappa_A first_order_rate_constant; extern real k_BCmax first_order_rate_constant; extern real beta_B first_order_rate_constant; extern real alpha_NB first_order_rate_constant; real BA(time) molar; //Warning: Assuming zero initial condition; nothing provided in original CellML model. when(time=time.min) BA=0; extern real k_BAmax first_order_rate_constant; extern real kappa_B first_order_rate_constant; extern real Nmax1 first_order_rate_constant; extern real kAN1 first_order_rate_constant; extern real kappa_NC first_order_rate_constant; extern real Bas1 first_order_rate_constant; extern real kFd first_order_rate_constant; extern real Nmax2 first_order_rate_constant; extern real kAN2 first_order_rate_constant; extern real kappa_NE first_order_rate_constant; extern real Bas2 first_order_rate_constant; // // Asc:time=(gamma_Asc*Asc*(C_Asc-Asc)-(pG+pDA)*T_Asc*Asc); // Csc:time=(gamma_Csc*Csc*(C_Csc-Csc)+gmax*GtnC^2/(GtnC^2+alpha_Csc^2)*Csc-(pE+pDC+pP)*T_Csc*Csc); // G:time=(pG*T_Asc*Asc+k_gmax*(1-AC^2/(AC^2+alpha_HA^2))*G-(gamma_Fdmax*(1-Fd^2/(Fd^2+alpha_Fd^2))*G+gamma_Gc*G)); // DA:time=(pDA*T_Asc*Asc+k_dmax*AC^2/(AC^2+alpha_HA^2)*DA+gamma_Fdmax*(1-Fd^2/(Fd^2+alpha_Fd^2))*DA-gamma_DA*DA); // DC:time=(pDC*T_Asc*Csc-gamma_DC*DC); // E:time=(pE*T_Csc*Csc-gamma_E*E+k_Emax*GtnC^2/(GtnC^2+alpha_E^2)*E); // P:time=(pP*T_Csc*Csc-gamma_P*P); // pG=exp((-1)*f*G^2/N_^2); pDA=exp((-1)*f*DA^2/N_^2); pDC=exp((-1)*f*DC^2/N_^2); pP=exp((-1)*f*P^2/N_^2); pE=exp((-1)*f*E^2/N_^2); // GtnA:time=((-1)*(G*(KNG1*NE/((NE+alpha_NG1)*(1+SA/kSG)*(1+AC^2/(AC^2+kAG^2)))+KNG2*NC/((NC+alpha_NG2)*(1+SA/kSG)*(1+AC^2/(AC^2+kAG^2)))+KFG*Fd/((Fd+alpha_Fd)*(1+SA/kSG)*(1+AC^2/(AC^2+kAG^2))))*((kG+beta_G)*GtnA))); // GtnC:time=(beta_G*GtnA-kappa_G*GtnC); // SA:time=((-1)*(DA*(KAS*AA/((AA+alpha_AS)*(1+SA/kSS)*(1+NC/kNS))+KGS*NE/((NE+alpha_NS)*(1+SA/kSS)*(1+NC/kNS)))*(kappa_S*SA))); // SC:time=((-1)*(DC*(KNS*NE/((NE+alpha_NS)*(1+SC/kSS)*(1+NC/kNS))+KGS*GtnC/((GtnC+alpha_GS)*(1+SC/kSS)*(1+NC/kNS)))*(kappa_S*SC))); // HC:time=((-1)*(E*(KNH*NE/((NE+alpha_NH)*(1+SC/kSH))+KGH*GtnC/((GtnC+alpha_GH)*(1+SC/kSH)))*(kappa_H*HC))); // AC:time=((-1)*(P*(KNA*NC/((NC+alpha_NA)*(1+SC/kSA))+HC/(HC+alpha_HA)+KGA*GtnC/((GtnC+alpha_GA)*(1+SC/kSA))+KHA*HC/((HC+alpha_HA)*(1+SC/kSA)))*(hb*AC*BC+k_Fdmax*Fd/(Fd+alpha_Fd)*AC+beta_A*AC))); // AA:time=(beta_A*AC-kappa_A*AA); // BC:time=(k_BCmax*NC/(NC+alpha_NB)-(hb*AC*BC+beta_B*BC)); // BA:time=(k_BAmax*NC/(NC+alpha_NB)-(hb*AA*BA+kappa_B*BA)); // NC:time=(Nmax1*Fd/((Fd+kFd)*(1+AC^2/(AC^2+kAN1^2)))-kappa_NC*NC+Bas1); // NE:time=(Nmax2*Fd/((Fd+kFd^2)*(1+AC^2/(AC^2+kAN2^2)))-kappa_NE*NE+Bas2); // }