### Simultaneous equations in python

Posted:

**Wed Aug 30, 2017 5:53 am**Hi,

I want to construct a network of pyramdial cells and interneuron. Therefore I have chosen to use a cell template similar to this one https://senselab.med.yale.edu/modeldb/S ... del=222321. Right now I am trying to construct cell templates in python that are similar to the original ones but use the same mechanisms. However I am having trouble including the mechanisms for the Na-K pump nakpump.mod. This mechanism needs a stability function that recaclulates sodium and potassium conductances and the maximal flux of the pump. This is done by defining simultaneous equations. The function is called once before the simulation is run. Here is the code of the original implementation in hoc:

I have tried to write my own version of this function in python. However because the eqn, eqinit() and solve() is not available in python, I do solve the equations and call my function at every time step before I call h.steprun(). This is the code:

The problem is that this appaerently does not work the same way as the implementation in hoc does. Now, I am aware that it is because the equations are not defined as simultanous ones in NEURON and hence are not solved parallel to the cable equation. Does anyone know how I can define simultaneous equations in python or how I could work around it? If anyone knows an example where this was done, it would also help me?

I would appreciate any help!

Best, Cathi

I want to construct a network of pyramdial cells and interneuron. Therefore I have chosen to use a cell template similar to this one https://senselab.med.yale.edu/modeldb/S ... del=222321. Right now I am trying to construct cell templates in python that are similar to the original ones but use the same mechanisms. However I am having trouble including the mechanisms for the Na-K pump nakpump.mod. This mechanism needs a stability function that recaclulates sodium and potassium conductances and the maximal flux of the pump. This is done by defining simultaneous equations. The function is called once before the simulation is run. Here is the code of the original implementation in hoc:

Code: Select all

```
proc pyramstab() {
access psoma
rm=$1
init()
vrest = -70
dr_na = vrest-ena
dr_k = vrest-ek
eqinit()
depvar gna, gk
eqn gk:: gk = 1/rm - gna
eqn gna:: gna = (-dr_k*(3/2)*gk)/dr_na
solve()
forall gk_leak=gk
forall gna_leak=gna
p_k=(1+km_k_nakpump/ko)^(-2)
p_na=(1+km_na_nakpump/nai)^(-3)
p_tot=p_k*p_na
forall imax_nakpump = (-gna_leak*dr_na)/(3*p_tot)
}
```

Code: Select all

```
def stab(celllist):
rm=5e3
vrest = -70
for nn in range(len(celllist)): # for each cell calculate and assign gk_leak, gna_leak and imax_nakpump
dr_na = vrest-celllist[nn].soma.ena
dr_k = vrest-celllist[nn].soma.ek
gk=(2*dr_na)/((3*dr_k-2*dr_na)*rm) # equations solved for gk and gna, see EqnSolve.nb
gna=(3*dr_k)/((3*dr_k-2*dr_na)*rm)
for ss in celllist[nn].sections:
ss.gk_leak=gk
ss.gna_leak=gna
p_k=(1+celllist[nn].soma.km_k_nakpump/celllist[nn].soma.ko)**(-2)
p_na=(1+celllist[nn].soma.km_na_nakpump/celllist[nn].soma.nai)**(-3)
p_tot=p_k*p_na
for ss in celllist[nn].sections:
ss.imax_nakpump = (-ss.gna_leak*dr_na)/(3*p_tot)
return
```

I would appreciate any help!

Best, Cathi