Accessing / SumUp I_CAP and I_MEMBRANE

Anything that doesn't fit elsewhere.
Post Reply
AndiL
Posts: 8
Joined: Sat Apr 26, 2008 4:41 am

Accessing / SumUp I_CAP and I_MEMBRANE

Post by AndiL »

Hi.

Can i access variables stepwise (and sum them) when i dont have explicit access to the .mod files?

My problem is, that i want to sum up i_cap and i_membrane.
What i really need is, the integral of the two currents. (but the sum will do anyway)

So in one of my models i just added another variable (sum_xxx) and added the value in every BREAKPOINT.

But to those i dont have access to.

Looking forward for help.
thanks in advance.

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

Integrating hoc-level variables

Post by ted »

If you don't need a running sum in the course of a simulation, just use the Vector class's
record() method (assert during model setup) to capture their time courses. Then
integrate after the end of the simulation. To automate this, declare a procedure that
calls run(), then a user-defined "postprocessing" procedure.

Example:

Code: Select all

// assumes simulation generated with fixed time steps
objref icvec
icvec = new Vector()
soma icvec.record(&i_cap(0.5))
icint = 0

// does trapezoidal integration of data sampled at fixed intervals
// expects 2 args: vector to be integrated, and data sampling interval
func trapint() {
  return $2*($o1.sum() - 0.5 * ( $o1.x[0] + $o1.x[$o1.size()-1] ))
}

postprocess() {
    icint = trapint(icvec, dt)
}

proc customrun() {
  run()
  postprocess()
}
Deal with i_membrane in exactly the same way.

This approach executes almost as fast as any NMODL-based approach, and it requires
absolutely no change to any mod files whatsoever.

Be sure to read about the Vector class's record(), sum(), ans size() methods in the
Programmer's Reference
http://www.neuron.yale.edu/neuron/stati ... tml#Vector
Also, to learn about proc trapint() and what to do if your simulations use cvode instead of
fixed dt, read this thread in The NEURON Forum
https://www.neuron.yale.edu/phpBB2/viewtopic.php?t=201
Post Reply