pump mechanism

Anything that doesn't fit elsewhere.
Post Reply
menica
Posts: 71
Joined: Wed Sep 02, 2015 11:02 am

pump mechanism

Post by menica »

Hi,
generally, in the Hodgkin-Huxley style model, the Na/K ion-pump is not explicitly modeled, instead, it is assumed that the passive conductance restores the resting membrane potential.
I want to model the explicit effect that the Na/K pump has on the Na and K concentrations and then on membrane potential.
I considered a single compartment. I inserted the following HH mechanism which contains the voltage-gated K and Na channel mechanisms, the Na/K pump and ion accumulation mechanisms:

Code: Select all

TITLE HH channels
:
: Fast Na+ and K+ currents responsible for action potentials
: Iterative equations
:
: Equations modified by Traub, for Hippocampal Pyramidal cells, in:
: Traub & Miles, Neuronal Networks of the Hippocampus, Cambridge, 1991
:
: range variable vtraub adjust threshold
:
: Written by Alain Destexhe, Salk Institute, Aug 1992
:
: Modifications by Arthur Houweling for use in MyFirstNEURON
: Modifications by Paulo Aguiar: vh changed from 5 to 6 - NOT ANYMORE: vh=5 as originally set

INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}

NEURON {
	SUFFIX HH2
	USEION na READ ena WRITE ina
	USEION k READ ek WRITE ik
	RANGE gnabar, gkbar, vtraub
	RANGE m_inf, h_inf, n_inf
	RANGE tau_m, tau_h, tau_n
	RANGE m_exp, h_exp, n_exp
	RANGE ik, ina 
}


UNITS {
	(mA) = (milliamp)
	(mV) = (millivolt)
}

PARAMETER {
	gnabar	= .1 	(mho/cm2)
	gkbar	= .06 	(mho/cm2)

	ena		(mV)
	ek		(mV)
	celsius		(degC)
	dt              (ms)
	v               (mV)
	vtraub	= -55	(mV)	: adjusts threshold
}

STATE {
	m h n
}

ASSIGNED {
	ina	(mA/cm2)
	ik	(mA/cm2)
	il	(mA/cm2)
	m_inf
	h_inf
	n_inf
	tau_m
	tau_h
	tau_n
	m_exp
	h_exp
	n_exp
	tadj
}


BREAKPOINT {
	SOLVE states
	ina = gnabar * m*m*m*h * (v - ena)
	ik  = gkbar * n*n*n*n * (v - ek)
}


:DERIVATIVE states {   : use this for exact Hodgkin-Huxley equations
:	evaluate_fct(v)
:	m' = (m_inf - m) / tau_m
:	h' = (h_inf - h) / tau_h
:	n' = (n_inf - n) / tau_n
:}

PROCEDURE states() {	: this discretized form is more stable
	evaluate_fct(v)
	m = m + m_exp * (m_inf - m)
	h = h + h_exp * (h_inf - h)
	n = n + n_exp * (n_inf - n)
	VERBATIM
	return 0;
	ENDVERBATIM
}

UNITSOFF
INITIAL {
:
:  Q10 was assumed to be 3 for both currents
:
	tadj = 3.0 ^ ((celsius-36)/ 10 )
	evaluate_fct(v)
	m= m_inf
	h= h_inf
	n= n_inf
}

PROCEDURE evaluate_fct(v(mV)) { LOCAL a,b,v2,vh

	v2 = v - vtraub : convert to traub convention
	vh = 5
	
	a = 0.32 * (13-v2) / ( exp((13-v2)/4) - 1)
	b = 0.28 * (v2-40) / ( exp((v2-40)/5) - 1)
	tau_m = 1 / (a + b) / tadj
	m_inf = a / (a + b)

	:a = 0.128 * exp((17-v2)/18)
	:b = 4 / ( 1 + exp((40-v2)/5) )
	:tau_h = 1 / (a + b) / tadj
	:h_inf = a / (a + b)
	
	a = 0.128 * exp((17-v2-vh)/18)
	b = 4 / ( 1 + exp((40-v2-vh)/5) )
	tau_h = 1 / (a + b) / tadj
	h_inf = a / (a + b)	
	
	
	a = 0.032 * (15-v2) / ( exp((15-v2)/5) - 1)
	b = 0.5 * exp((10-v2)/40)
	tau_n = 1 / (a + b) / tadj
	n_inf = a / (a + b)

	m_exp = 1 - exp(-dt/tau_m)
	h_exp = 1 - exp(-dt/tau_h)
	n_exp = 1 - exp(-dt/tau_n)
}

UNITSON

Code: Select all

TITLE sodium potassium pump
:  from Lindblad et al Am J Physiol 1996 275:H1666

NEURON {
	SUFFIX nkpump
	USEION k READ ko, ki WRITE ik
	USEION na READ nao, nai WRITE ina
	RANGE ik, ina , INaKmax, ink, Kmko, Kmnai,inapump
	GLOBAL dummy : prevent vectorization for use with CVODE
}

UNITS {
	(mA) = (milliamp)
	(mV) = (millivolt)
	
}

PARAMETER {
	INaKmax = 2.18660e-3       (mA/cm2) <0,1e6>
	Kmnai =    10          (mM)    <0,1e6>
	Kmko =     1.5         (mM)    <0,1e6>
}

ASSIGNED {
	celsius (degC)
	v (mV)
	ik (mA/cm2)
	ina (mA/cm2)
	ko (mM)
        ki (mM)
	nao (mM)
	nai (mM)
	ink (mA/cm2)
	dummy
}

BREAKPOINT { 
		
	ink= INaKmax/((1 + (Kmnai/nai)^1.5)*(1 + Kmko/ko))
        ina = 3*ink
	ik = -2*ink
}

Code: Select all

NEURON {
  SUFFIX nacumst
  USEION na READ ina WRITE nai
  RANGE tau, C0
}

UNITS {
  (mA) = (milliamp)
  (mol) = (1)
  (molar) = (mol/liter)
  (mM) = (millimolar)
  (uM) = (micromolar)
  (um) = (micrometer)
  FARADAY = (faraday) (coulombs)
}

PARAMETER {
  tau = 5 (ms) : AB soma; 300 ms for PD soma
  C0 = 10 (mM)
}

ASSIGNED {
  ina (mA/cm2)
  diam (um)
}

STATE {
  nai (mM)
}

INITIAL {
  nai = C0
}

BREAKPOINT {
  SOLVE states METHOD cnexp
}

DERIVATIVE states {
  nai' = -(1e4)*2*ina/(FARADAY*diam) + (C0 - nai)/tau
}
I would like to change the pump mechanism in order to obtain this: when I insert an IClamp stimulus with a certain duration and amplitude able to generate a spike, after a certain time v returns back to the resting membrane potential because the pump has been able to pump ions against the concentration gradients. Basically, if the voltage-gated channels moved a certain amount of Na (k) ions inside (outside) the cell (quickly), the pump in order to restore the equilibrium should pump in the opposite direction the same amount of ions on a different time scale (slowly). I would like to correctly count this amont of ions.
At the moment, of course, I have that the v is going below the resting potential because the currents generated by the pump is not balancing the current genereted by the the channels.
Here figures for the Na:
Image
The ink is dependent on the change of ionic concentration (nai and ko). The change of ionic concentrations is own to the activated currents.
I think would be useful to keep track of the numbers of ions are moving in or out the cell, but how?
I think I should modify something in
ink= INaKmax/((1 + (Kmnai/nai)^1.5)*(1 + Kmko/ko))
but, in which direction to go?
Or I can use persistent Na and K channels inseatd?
Best
Menica
menica
Posts: 71
Joined: Wed Sep 02, 2015 11:02 am

Re: pump mechanism

Post by menica »

Hi, I tried to step back and consider a single compartment where I inserted a Na leak current, pump Na, and Na accumulation mechanisms:

Na leak:

Code: Select all

NEURON {
	SUFFIX ionleak
	USEION na READ ena,nai WRITE ina
	RANGE  gna,  ina
}

UNITS {
	(mV) = (millivolt)
	(mA) = (milliamp)
	(S) = (siemens)
        F = (faraday) (coulomb)
        R = (mole k) (mV-coulomb/degC)
}

PARAMETER {
	gna = 0 (S/cm2)
celsius = 35  (degC)
nao = 145 (mM)
nai = 10   (mM)
}

ASSIGNED {
	v (mV)
	ena (mV)
	ina (mA/cm2)
}

BREAKPOINT {
ena = R*(celsius+273.15)/F*log(nao/nai)
	ina = gna*(v - ena)
}
Na pump:

Code: Select all

TITLE PUMP
 
UNITS {
       (molar) = (1/liter)
        (pA) = (picoamp)
	(mV) =	(millivolt)
        (uS) = (micromho)
	(mA) =	(milliamp)
	(mM) =	(millimolar)
}

INDEPENDENT {v FROM -100 TO 50 WITH 50 (mV)}

NEURON {
	SUFFIX pump
	USEION na READ nai  WRITE ina
	RANGE  inapump,ipumpmax,n,km, ina, Rna
}

PARAMETER {
        dt (ms)
        nai   (mM)
        ipumpmax  = 0.04   (mA/cm2)
        km = 10.0        (mM)
        n=1.5
        nainit = 10  (mM)
        celsius = 35  (degC)
}

ASSIGNED { 
           ina		(mA/cm2)
        inapump (mA/cm2)
}

BREAKPOINT {
        inapump = ipumpmax*(1/(1 + pow(km/nai,n)))
	ina = inapump
}
Na accumulation:

Code: Select all

NEURON {
  SUFFIX nacumst
  USEION na READ ina WRITE nai
  RANGE tau, C0
}

UNITS {
  (mA) = (milliamp)
  (mol) = (1)
  (molar) = (mol/liter)
  (mM) = (millimolar)
  (uM) = (micromolar)
  (um) = (micrometer)
  FARADAY = (faraday) (coulombs)
}

PARAMETER {
  tau = 5 (ms)
  C0 = 10 (mM)
}

ASSIGNED {
  ina (mA/cm2)
  diam (um)
}

STATE {
  nai (mM)
}

INITIAL {
  nai = C0
}

BREAKPOINT {
  SOLVE states METHOD cnexp
}

DERIVATIVE states {
  nai' = -(1e4)*2*ina/(FARADAY*diam) + (C0 - nai)/tau
}
I stimulated the system with a IClamp impulse.
I expected to obtain an ina net current which is the sum of the ina_ionleak +ina_pump, and that is.
But I expect also to have the same amount of na ions moved in by the leak current be equal to the amount of na ions pumped out by the pump...but this does not happen.
What should I change in my mechanisms?
Post Reply