def model potassium_ion_channel as def import using "Noble62_units.xml" for unit mV using unit mV; unit ms using unit ms; unit mM using unit mM; unit per_ms using unit per_ms; unit per_mV using unit per_mV; unit per_mV_ms using unit per_mV_ms; unit microS using unit microS; unit nanoA using unit nanoA; enddef; def group as encapsulation for comp potassium_channel incl comp potassium_channel_n_gate; endcomp; enddef; def comp potassium_channel as var V: mV {pub: in, priv: out}; var t: ms {pub: in, priv: out}; var n: dimensionless {priv: in}; var Ki: mM {pub: in}; var Ko: mM {pub: in}; var RTF: mV {init: 25}; var E_K: mV; var g_K1: microS; var g_K2: microS; var i_K: nanoA {pub: out}; E_K = RTF*ln(Ko/Ki); g_K1 = 1200{microS}*exp(-(V+90{mV})/50{mV}) +15{microS}*exp((V+90{mV})/60{mV}); g_K2 = 1200{microS}*pow(n, 4{dimensionless}); i_K = (g_K1+g_K2)*(V-E_K); enddef; def comp potassium_channel_n_gate as var V: mV {pub: in}; var t: ms {pub: in}; var n: dimensionless {init: 0.01, pub: out}; var alpha_n: per_ms; var beta_n: per_ms; alpha_n = -0.0001{per_mV_ms}*(V+50{mV}) /(exp(-(V+50{mV})/10{mV})-1{dimensionless}); beta_n = 0.0020{per_ms}*exp(-(V+90{mV})/80{mV}); ode(n,t)= alpha_n*(1{dimensionless}-n)-beta_n*n; enddef; def map between environment and potassium_channel for vars V and V; vars t and t; enddef; def map between potassium_channel and potassium_channel_n_gate for vars V and V; vars t and t; vars n and n; enddef; enddef;