/* * Computational model of the cAMP-mediated sensory response and * calcium-dependent adaptation in vertebrate olfactory receptor * neurons * * Model Status * * This model runs in both OpenCell and COR and the units are consistent. * The model recreates results from a sinlge pulse experiment suitable * for adaptation and oscillatory behavior. Modification of the * stimulus and addition of IX, an intermediate Ca2+ generated * substance can be made to fulfill different simulations. * * Model Structure * * Abstract: We develop a mechanistic mathematical model of the * G-protein coupled signaling pathway responsible for generating * current responses in frog olfactory receptor neurons. The model * incorporates descriptions of ligand-receptor interaction, intracellular * transduction events involving the second messenger cAMP, effector * ion-channel activity, and calcium-mediated feedback steps. We * parameterized the model with respect to suction pipette current * recordings from single cells stimulated with multiple odor concentrations. * The proposed model accurately predicts the receptor-current * response of the neuron to brief and prolonged odorant exposure * and is able to produce the adaptation observed under repeated * or sustained stimulation. * * model diagram Schematic diagram of the Dougherty et al model. * * The complete original paper reference is cited below: * * Computational model of the cAMP-mediated sensory response and * calcium-dependent adaptation in vertebrate olfactory receptor * neurons, Daniel P. Dougherty, Geraldine A. Wright, Alice C. * Yew, 2005, Proceeding of the National Academy of Sciences , * 102, 10415- 10420. PubMed ID: 16027364 */ import nsrunit; unit conversion on; unit uM=1E-3 meter^(-3)*mole^1; // unit micromole predefined unit uM_per_second=1E-3 meter^(-3)*second^(-1)*mole^1; unit per_uM_per_second=1E3 meter^3*second^(-1)*mole^(-1); unit per_second=1 second^(-1); // unit millivolt predefined // unit nanofarad predefined // unit nanosiemens predefined // unit nanocoulomb predefined // unit picocoulomb predefined unit uM_per_picocoulomb=1E9 meter^(-3)*second^(-1)*ampere^(-1)*mole^1; unit picocoulomb_per_uM=1E-9 meter^3*second^1*ampere^1*mole^(-1); unit coulombs_per_mole=1 second^1*ampere^1*mole^(-1); unit picocoulomb_per_second=1E-12 ampere^1; // unit nanoampere predefined math main { realDomain time second; time.min=0; extern time.max; extern time.delta; real cap nanofarad; cap=0.004; real cc1lin per_second; cc1lin=0.88; real cc_2 per_second; cc_2=26; real ck1lin per_second; ck1lin=13; real ck_2 per_second; ck_2=0.9; real clmax nanosiemens; clmax=1; real cnmax nanosiemens; cnmax=1; real cx1lin per_second; cx1lin=1; real cx2 per_second; cx2=13; real ef per_second; ef=2; real gl nanosiemens; gl=6; real hmc_1 uM; hmc_1=2; real hmc_2 uM; hmc_2=3; real inf uM_per_picocoulomb; inf=1.9; real inhmax dimensionless; inhmax=5; real k_1 per_uM_per_second; k_1=0.06; real k_2 per_second; k_2=20; real kI uM; kI=0.7; real kinh uM; kinh=2; real kinhcng uM; kinhcng=1; // Var below replaced by constant in model eqns to satisfy unit correction // real n_1 dimensionless; // n_1=2; // Var below replaced by constant in model eqns to satisfy unit correction // real n_2 dimensionless; // n_2=2; real nI dimensionless; nI=2; real ninh dimensionless; ninh=1.5; // Var below replaced by constant in model eqns to satisfy unit correction // real ninhcng dimensionless; // ninhcng=1.3; real pd per_second; pd=20; real r_1 per_second; r_1=10; real r_2 per_second; r_2=5; real smax uM_per_second; smax=71; real V_Cl millivolt; V_Cl=-50; real V_cng millivolt; V_cng=0; real V_l millivolt; V_l=-70; real F_vol picocoulomb_per_uM; real F coulombs_per_mole; F=9.649e4; real C_vol liter; C_vol=1e-13; real O_stim(time) uM; real od uM; od=20; real t_0 second; t_0=0.5; real t_1 second; t_1=1.5; real H_0(time) dimensionless; real H_1(time) dimensionless; real bLR(time) dimensionless; when(time=time.min) bLR=0; real R_tot dimensionless; R_tot=1; real aG(time) dimensionless; when(time=time.min) aG=0; real G_tot dimensionless; G_tot=1; real k_G(time) per_second; real r_G(time) per_second; real cAMP(time) uM; when(time=time.min) cAMP=1.35648992164649e-88; real synth(time) uM_per_second; real degrad(time) uM_per_second; real aCaMK(time) uM; when(time=time.min) aCaMK=6.60756525051462e-8; real Ca(time) uM; when(time=time.min) Ca=5.09073088043779e-12; real I_CNG(time) nanoampere; real J_NCX(time) uM_per_second; real cc_1(time) uM_per_second; real CaCaM(time) uM; when(time=time.min) CaCaM=1.86113118246926e-13; real ck_1(time) uM_per_second; real V(time) millivolt; when(time=time.min) V=-70; real I_ClCa(time) nanoampere; real I_NCX(time) nanoampere; real I_other(time) nanoampere; real inhcng(time) dimensionless; // // F_vol=((1E12 picocoulomb)/(1 coulomb)*((1 mole)/(1E3 micromole))*F*C_vol); // H_0=(if (time bLR:time=(k_1*O_stim*(R_tot-bLR)-r_1*bLR); // aG:time=(k_G*(G_tot-aG)-r_G); // k_G=(k_2*bLR); // r_G=(r_2*aG); // cAMP:time=(synth-degrad); // synth=(aG*smax/(1+(aCaMK/kinh)^ninh)); // degrad=(pd*cAMP); // Ca:time=((1E3 picocoulomb)/(1 nanocoulomb)*inf*I_CNG-J_NCX-(cc_1-cc_2*CaCaM)); // cc_1=(cc1lin*Ca); // CaCaM:time=(cc_1-cc_2*CaCaM); // aCaMK:time=(ck_1-ck_2*aCaMK); // ck_1=(ck1lin*CaCaM); // V:time=((1E3 millivolt)/(1 volt)*(1/cap)*(I_CNG+I_ClCa+I_NCX+I_other)); // I_CNG=(cnmax*cAMP^2/(cAMP^2+(inhcng*hmc_1)^2)*((1 volt)/(1E3 millivolt))*(V_cng-V)); // inhcng=(1+(inhmax-1)*CaCaM^1.3/(CaCaM^1.3+kinhcng^1.3)); // I_ClCa=(clmax*Ca^2/(Ca^2+hmc_2^2)*((1 volt)/(1E3 millivolt))*(V_Cl-V)); // I_NCX=((1 nanocoulomb)/(1E3 picocoulomb)*F_vol*J_NCX); // J_NCX=(ef*Ca); // I_other=(gl*((1 volt)/(1E3 millivolt))*(V_l-V)); }