Understanding Na Dynamics

NMODL and the Channel Builder.
Post Reply
namisha
Posts: 4
Joined: Sat Apr 24, 2010 9:24 pm

Understanding Na Dynamics

Post by namisha »

Hi,
I am new to the forum. I am working on building a mechanism which implements Na depletion/accumulation in Intracellular/Extracellular space and is also able to implement diffusion of Na from extracellular space to a fixed volume sink.
I went through the nacum.mod file provided in the nrn71\examples\nrniv\nmodl directory which does the same thing but i guess the bath that is modeled in the example is infinite. I want to conserve the Na within the intracellular space,extracellular space and the sink(/bath). I'll be grateful if someone can help me out in doing this?
thanks in advance
ted
Site Admin
Posts: 6289
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Understanding Na Dynamics

Post by ted »

Well, you're on the right track, but that particular mod file contains multiple examples of deprecated code (deprecated code may still work, but shouldn't be used in new program development). You're better off patterning your code after the example in this thread:
intracellular K depletion and extracellular K accumulation
viewtopic.php?f=16&t=1938
changing the names of parameters and variables, and the values of parameters, wherever necessary. And, as always, test the result to make sure that it works properly. Reasonable tests would include verifying that:
--at equilibrium, all compartments have the same concentration
--initialization of concentration in any of the compartments to a nonequilibrium value produces a simulation in which all concentrations adjust appropriately
--an action potential produces appropriate concentration changes (estimate the amount of Na that has entered the cell, and make sure that the intra- and extracellular concentrations change appropriately)
namisha
Posts: 4
Joined: Sat Apr 24, 2010 9:24 pm

Re: Understanding Na Dynamics

Post by namisha »

Hi Ted,

Thanks for the reply. I have a few more questions please

First,

when you say

Code: Select all

--at equilibrium, all compartments have the same concentration
--initialization of concentration in any of the compartments to a nonequilibrium value produces a simulation in which all concentrations adjust appropriately
Am I right in understanding, that to check the above , I should allow a simulation to run for some time without injecting any action potential or synaptic inputs into the cell and after some time I should expect the concentrations in all sections to become equal.

Second,
If my above understanding is correct then there would be some automatic spiking and a flow of Na across the cell membrane even when there is no action potential. But what I desire is that Na should flow across the membrane only when there is an action potential injected by me and other than that the Na conc in the various compartments should remain at their initialized values.How can i do that ?
ted
Site Admin
Posts: 6289
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Understanding Na Dynamics

Post by ted »

namisha wrote:when you say

Code: Select all

--at equilibrium, all compartments have the same concentration
--initialization of concentration in any of the compartments to a nonequilibrium value produces a simulation in which all concentrations adjust appropriately
Am I right in understanding, that to check the above , I should allow a simulation to run for some time without injecting any action potential or synaptic inputs into the cell and after some time I should expect the concentrations in all sections to become equal.
My mistake. I meant to say that the concentrations in the two extracellular compartments will become equal. Intracellular and extracellular concentrations nai and nao will eventually become equal only if membrane potential is 0.
If my above understanding is correct then there would be some automatic spiking and a flow of Na across the cell membrane even when there is no action potential.
No, there won't be "automatic spiking", and yes, if the membrane of your model cell has nonzero sodium conductance, and v-ena < 0, then there will be an influx of Na, and nai and nao will change. This will occur with the accumulation mechanism you were originally looking at, and with the mechanism that I suggested you construct by modifying kacc.
But what I desire is that Na should flow across the membrane only when there is an action potential injected by me and other than that the Na conc in the various compartments should remain at their initialized values.How can i do that ?
If the membrane of your model cell has nonzero sodium conductance, sodium current will flow through that conductance unless v = ena. This will affect nao and nai, unless you do one of two things:
(1) don't include a sodium accumulation mechanism in your model
OR
(2) include a sodium accumulation mechanism, but also add a sodium pump that is "smart" enough to pump na out just fast enough to counterbalance the influx of na through sodium channels that occurs when the cell is at rest.

So you probably want to do something like (2). Here's how to proceed:
1. First, create the mod file that I discussed in my previous answer.
2. After you have that working properly, I'll show you how to add a simple pump to it, and how to set up a custom initialization that will ensure that the pump counterbalances the resting sodium flux through ionic channels.
namisha
Posts: 4
Joined: Sat Apr 24, 2010 9:24 pm

Re: Understanding Na Dynamics

Post by namisha »

Thanks ted for the reply,
I have made a naacc.mod file (just changed the ion name and initial concentrations). This is the mod file and it is compiling correctly

Code: Select all

    COMMENT
    Na moves between intra- and extracellular volumes 
	and diffuses from extracellular volume into a sink of fixed volume.
    Extracellular volume is a specified fraction rho of intracellular volume.
    Sink Volume is a specified fraction rhosnk of intracellular volume

    ENDCOMMENT

    NEURON {
      SUFFIX naacc
      USEION na READ ina WRITE nao,nai
      RANGE rho,rhosnk,nas,taus
    }

    UNITS {
      (mV) = (millivolt)
      (mA) = (milliamp)
      FARADAY = (faraday) (coulombs)
      (molar) = (1/liter)
      (mM) = (millimolar)
    }

    PARAMETER {
      nai0   = 15.7	(mM)	: Initial na Conc within the section
      nao0   = 116	(mM)  : Initial na conc in Extracellular space
      nas0   = 116	(mM)  : Initial na conc in Sink
      rhosnk = 1  	(1)   : Ratio of Sink Volume to section volume
	rho = 0.2 		(1)	: Ratio of ECS volume to section volume
	taus = 50		(ms)	: tau for diffusion from ECS to Sink
    }

    ASSIGNED {
      ina (mA/cm2)
      diam (micron)
      nax   (mM)
	nai	(mM)
    }

    INITIAL {
      nai = nai0
      nao = nao0
      nas = nas0
      nax = nai + nao*rho + nas*rhosnk
    }

    STATE {
      nao (mM)
	nas (mM)
    }

    BREAKPOINT {
       SOLVE state METHOD cnexp
    }

    DERIVATIVE state {
      nao'=(1e4)*4*ina/(rho*diam*FARADAY)+(nas-nao)/taus
      nas'= (nao-nas)/taus
      nai= nax-nao*rho-nas*rhosnk
    }

However, when i tried inserting the mechanism into a simple cell and simulated it for some time, there was a change in the nai and nao values even without inserting any action potential.

Is this what you meant when you said "if the membrane of your model cell has nonzero sodium conductance, and v-ena < 0, then there will be an influx of Na, and nai and nao will change. This will occur with the accumulation mechanism you were originally looking at, and with the mechanism that I suggested you construct by modifying kacc."

Here is the hoc code that i used for the above test

Code: Select all

load_file("nrngui.hoc") 

objref stim,shape,naplot,voltplot

create soma
access soma

soma nseg = 1
soma diam = 18.8
soma L = 18.8
soma Ra = 123.0

soma insert hh
soma insert naacc

/*
objectvar stim
soma stim = new IClamp(0.5)
stim.del = 100
stim.dur = 100
stim.amp = 0.1
*/
tstop = 3000
steps_per_ms = 10
dt = 0.1

// SODIUM GRAPH
naplot=new Graph()
naplot.size(0,tstop,-0.0001,55)
naplot.xaxis() naplot.yaxis()
naplot.addvar("soma.nai(0.5)",2,0) 
naplot.addvar("soma.nao(0.5)",3,0) 
naplot.save_name("graphList.")
graphList.append(naplot)

// VOLTAGE GRAPH
voltplot=new Graph()
voltplot.size(0,tstop,-90,50)
voltplot.xaxis() voltplot.yaxis()
voltplot.addvar("soma.v(0.5)",1,0)
voltplot.addvar("soma.ena(0.5)",2,0)
voltplot.addvar("soma.ek(0.5)",3,0)
voltplot.save_name("graphList.")
graphList.append(voltplot)

nrncontrolmenu()
run()

Am now waiting for the pump mechanism and custom initializations that you have so kindly offered to provide.

As an aside, is it possible to insert images within the posts?
thanks a lot
namisha
Posts: 4
Joined: Sat Apr 24, 2010 9:24 pm

Re: Understanding Na Dynamics

Post by namisha »

Hi Ted,

May I request you to please look at my previous post and help me out with the Na pump that you had suggested.

thanks in advance
menica
Posts: 71
Joined: Wed Sep 02, 2015 11:02 am

Re: Understanding Na Dynamics

Post by menica »

Hi namisha, I have your similar problems.
How did you resolve the problem to connect the na-k pump to internal sodium concentration change?

thanks
ted
Site Admin
Posts: 6289
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Understanding Na Dynamics

Post by ted »

menica wrote:How did you resolve the problem to connect the na-k pump to internal sodium concentration change?
ModelDB contains several models implemented for NEURON that include a sodium pump and/or a sodium-calcium exchange mechanism. The following examples are drawn from the first half of hits generated by using ModelDB's Search to look for the words
sodium pump

nacum.mod and nacaex.mod in https://senselab.med.yale.edu/modeldb/s ... model=3800
nadifl.mod and pump.mod in https://senselab.med.yale.edu/modeldb/S ... model=6763
nabalan.mod and pump.mod in https://senselab.med.yale.edu/modeldb/S ... odel=84612
nakpump.mod in https://senselab.med.yale.edu/modeldb/S ... del=113446
nakpump.mod in https://senselab.med.yale.edu/modeldb/S ... del=120692
Nakpump.mod in https://senselab.med.yale.edu/modeldb/S ... del=121253
Na_conc.mod in http://senselab.med.yale.edu/modeldb/sh ... del=127021
nkpump.mod in https://senselab.med.yale.edu/modeldb/S ... del=139418

As always, read the original paper, examine the code, and run tests to be sure that it does what you want it to.
Post Reply