## List of Errata for the Enhanced Preprint of "Expanding NEURON's Repertoire of Mechanisms with NMODL"

These corrections pertain to the "enhanced preprint" of "Expanding NEURON's repertoire of mechanisms with NMODL."
They do not apply to the paper as it appeared in Neural Computation, because the latter did not present extensively detailed model source code.
### Reference

Hines, M.L. and Carnevale, N.T.
Expanding NEURON's Repertoire of Mechanisms with NMODL.
*Neural Computation* 12:995-1007, 2000.

### Example 9: a calcium pump

To calculate the flux of calcium via ion channels into the ca[0] state,
this mechanism must
subtract the pump's own current from the total calcium current.
The description in the pdf file subtracts ica_pmp, which is the
pump's current computed at the present time.
With fixed time step methods, this is incorrect--instead it should
subtract the pump current computed at the end of the previous time step.
The code as described in the pdf produces simulations in which the time
course of calcium concentration is affected by the calcium concentration
at the end of the previous simulation.

The fix is merely to introduce a new variable ica_pmp_last whose value
is the pump current at the end of the previous step. This requires
proper declaration and initialization of ica_pmp and ica_pmp_last,
which involves the following changes to the mod file.
For the convenience of users, at the end of this erratum is a link
to a version of the mod file cdp.mod that contains all of the necessary changes.

Page 44 **The ASSIGNED block**

This needs to have _four_ additions:

cao (mM)
ica_pmp (mA/cm2)
ica_pmp_last (mA/cm2)
parea (um) : pump area per unit length

Page 45 **The BREAKPOINT block**

This should include a statement that assigns a value to ica_pmp_last

BREAKPOINT {
SOLVE state METHOD sparse
ica_pmp_last = ica_pmp
ica = ica_pmp
}

Page 45 **The INITIAL block**

For the "alternative style of initialization," in which NEURON calculates the values of pump and pumpca, the statements

ica=0
SOLVE state STEADYSTATE sparse

should be
ica=0
ica_pmp = 0
ica_pmp_last = 0
SOLVE state STEADYSTATE sparse

Note that the KINETIC block on page 46 already contains the CONSERVE statement
CONSERVE pump + pumpca = TotalPump * parea * (1e10)

that is necessary for independence of the equations that describe free and bound buffer.
Page 46 **The STATE block**

This section of the paper should actually be called **The KINETIC block**.
The LONGITUDINAL_DIFFUSION statement should be changed from

LONGITUDINAL_DIFFUSION i, DCa {ca}

to
LONGITUDINAL_DIFFUSION i, DCa*diam*diam*vrat[i] {ca}

i.e. exactly as in Listing 8 on page 38.
The expression for the flux into ca[0] should subtract ica_pmp_last instead of ica_pmp, i.e. it should be changed from

~ ca[0] << (-(ica - ica_pmp)*PI*diam/(2*FARADAY)) : ica is Ca efflux

to
~ ca[0] << (-(ica - ica_pmp_last)*PI*diam/(2*FARADAY)) : ica is Ca efflux

**Complete listing of cdp.mod**

Here is the complete, correct cdp.mod for four radial compartments (Nannuli == 4).

* Page and graphics copyright © 2008 N.T. Carnevale and M.L. Hines,
All Rights Reserved.*