Unable to access current attribute.

When Python is the interpreter, what is a good
design for the interface to the basic NEURON
concepts.

Moderator: hines

Post Reply
roybens
Posts: 54
Joined: Fri Mar 14, 2008 7:57 am

Unable to access current attribute.

Post by roybens »

Hello,

I am encountering an AttributeError while trying to access a current attribute in a NEURON simulation. The error message states that the nrn.Section object does not have the attribute 'ina_ina_na12'. I have checked my code and the corresponding .mod file of NEURON model, but I can't seem to find any issues.

I am trying to access the current attribute 'ina_ina_na12' using the following code:

Code: Select all

h.cell.soma[0](0.5).ina_ina_na12
Also tried just ,

Code: Select all

h.cell.soma[0](0.5).ina_na12
it seems that this attribute is not recognized in the nrn.Section object. I have verified that the section exists and other attributes are accessible without any issues.

following is the corresponing na12.mod file

Code: Select all

: Eight state kinetic sodium channel gating scheme
: Modified from k3st.mod, chapter 9.9 (example 9.7)
: of the NEURON book
: 12 August 2008, Christoph Schmidt-Hieber
:
: accompanies the publication:
: Schmidt-Hieber C, Bischofberger J. (2010)
: Fast sodium channel gating supports localized and efficient 
: axonal action potential initiation.
: J Neurosci 30:10233-42
NEURON {
    SUFFIX na12
    USEION na READ ena WRITE ina
    RANGE vShift, vShift_inact, maxrate
    RANGE vShift_inact_local
    RANGE gna, gbar, ina_ina
    RANGE a1_0, a1_1, b1_0, b1_1, a2_0, a2_1
    RANGE b2_0, b2_1, a3_0, a3_1, b3_0, b3_1
    RANGE bh_0, bh_1, bh_2, ah_0, ah_1, ah_2
    RANGE ahfactor,bhfactor
}
UNITS { (mV) = (millivolt) }
: initialize parameters
PARAMETER {
    gbar = 0.008 (mho/cm2)
:    gbar = 3     (millimho/cm2)
:    gbar = 1000     (mho/cm2)
    a1_0 = 4.584982656184167e+01 (/ms)
    a1_1 = 2.393541665657613e-02 (/mV) 
    
    b1_0 = 1.440952344322651e-02 (/ms)
    b1_1 = 8.847609128769419e-02 (/mV)
    a2_0 = 1.980838207143563e+01 (/ms)
    a2_1 = 2.217709530008501e-02 (/mV) 
    
    b2_0 = 5.650174488683913e-01 (/ms)
    b2_1 = 6.108403283302217e-02 (/mV)
    a3_0 = 7.181189201089192e+01 (/ms)
    a3_1 = 6.593790601261940e-02 (/mV) 
    
    b3_0 = 7.531178253431512e-01 (/ms)
    b3_1 = 3.647978133116471e-02 (/mV)
    bh_0 = 2.830146966213825e+00 (/ms)
    bh_1 = 2.890045633775495e-01
    bh_2 = 6.960300544163878e-02 (/mV)
    ah_0 = 5.757824421450554e-01 (/ms)
    ah_1 = 1.628407420157048e+02
    ah_2 = 2.680107016756367e-02 (/mV)
    ahfactor=1
    bhfactor=1
    vShift = 10            (mV)  : shift to the right to account for Donnan potentials
                                 : 12 mV for cclamp, 0 for oo-patch vclamp simulations
    vShift_inact = 10      (mV)  : global additional shift to the right for inactivation
                                 : 10 mV for cclamp, 0 for oo-patch vclamp simulations
    vShift_inact_local = 0 (mV)  : additional shift to the right for inactivation, used as local range variable
    maxrate = 8.00e+03     (/ms) : limiting value for reaction rates
                                 : See Patlak, 1991
    temp = 23   (degC)      : original temp 
    q10  = 3            : temperature sensitivity
    q10h  = 3       : temperature sensitivity for inactivatoin
    celsius     (degC)
}
ASSIGNED {
    v    (mV)
    ena  (mV)
    gna    (millimho/cm2)
    ina  (milliamp/cm2)
   ina_ina  (milliamp/cm2)  :to monitor
    a1   (/ms)
    b1   (/ms)
    a2   (/ms)
    b2   (/ms)
    a3   (/ms)
    b3   (/ms)
    ah   (/ms)
    bh   (/ms)
    tadj
    
    tadjh
}
STATE { c1 c2 c3 i1 i2 i3 i4 o }
BREAKPOINT {
    SOLVE kin METHOD sparse
    gna = gbar*o
:   ina = g*(v - ena)*(1e-3)
    ina = gna*(v - ena)     : define  gbar as pS/um2 instead of mllimho/cm2
    ina_ina = gna*(v - ena)     : define  gbar as pS/um2 instead of mllimho/cm2     :to monitor
}
INITIAL { SOLVE kin STEADYSTATE sparse }
KINETIC kin {
    rates(v)
    ~ c1 <-> c2 (a1, b1)
    ~ c2 <-> c3 (a2, b2)
    ~ c3 <-> o (a3, b3)
    ~ i1 <-> i2 (a1, b1)
    ~ i2 <-> i3 (a2, b2)
    ~ i3 <-> i4 (a3, b3)
    ~ i1 <-> c1 (ah, bh)
    ~ i2 <-> c2 (ah, bh)
    ~ i3 <-> c3 (ah, bh)
    ~ i4 <-> o  (ah, bh)
    CONSERVE c1 + c2 + c3 + i1 + i2 + i3 + i4 + o = 1
}
: FUNCTION_TABLE tau1(v(mV)) (ms)
: FUNCTION_TABLE tau2(v(mV)) (ms)
PROCEDURE rates(v(millivolt)) {
    LOCAL vS
    vS = v-vShift
    tadj = q10^((celsius - temp)/10)
    tadjh = q10h^((celsius - temp)/10)
:   maxrate = tadj*maxrate
    a1 = tadj*a1_0*exp( a1_1*vS)
    a1 = a1*maxrate / (a1+maxrate)
    b1 = tadj*b1_0*exp(-b1_1*vS)
    b1 = b1*maxrate / (b1+maxrate)
    
    a2 = tadj*a2_0*exp( a2_1*vS)
    a2 = a2*maxrate / (a2+maxrate)
    b2 = tadj*b2_0*exp(-b2_1*vS)
    b2 = b2*maxrate / (b2+maxrate)
    
    a3 = tadj*a3_0*exp( a3_1*vS)
    a3 = a3*maxrate / (a3+maxrate)
    b3 = tadj*b3_0*exp(-b3_1*vS)
    b3 = b3*maxrate / (b3+maxrate)
    
    bh = tadjh*bh_0/(1+bh_1*exp(-bh_2*(vS-vShift_inact-vShift_inact_local)))
    bh = bh*maxrate / (bh+maxrate)
    ah = tadjh*ah_0/(1+ah_1*exp( ah_2*(vS-vShift_inact-vShift_inact_local)))
    ah = ah*maxrate / (ah+maxrate)   
    ah = ah*ahfactor
    bh = bh*bhfactor
}


Could you please help me understand why this attribute is not recognized and how I can access it correctly? Thank you for your assistance
ramcdougal
Posts: 267
Joined: Fri Nov 28, 2008 3:38 pm
Location: Yale School of Public Health

Re: Unable to access current attribute.

Post by ramcdougal »

Double check that the na12 mechanism was inserted in that section. (You can test with e.g. h.cell.soma[0].psection())

Assuming it has been inserted, then you should be able to access it via either h.cell.soma[0](0.5).na12.ina_ina or h.cell.soma[0]soma(0.5).ina_ina_na12. I prefer the first way because I think it's clearer that ina_ina is a property of the na12 mechanism, but it's really personal preference.

Code: Select all

>>> from neuron import h
>>> soma = h.Section("soma")
>>> soma.insert(h.na12)
soma
>>> soma(0.5).na12.ina_ina = 42
>>> soma(0.5).ina_ina_na12
42.0
Post Reply