: Point process to record Cai amplitudes
NEURON {
POINT_PROCESS CalAmp
USEION ca READ cai
RANGE n, thresh, time, firing, max, high
}
UNITS {
(molar) = (1/liter)
(uM) = (micromolar)
(mM) = (millimolar)
}
PARAMETER {
n
thresh = 100e-6 (mM)
time (ms)
}
ASSIGNED {
firing
space
high
max
cai (mM)
}
VERBATIM
#ifndef NRN_VERSION_GTEQ_8_2_0
extern void vector_resize();
extern double* vector_vec();
extern void* vector_arg();
#endif
ENDVERBATIM
INITIAL {
n = 0
firing = 0
high=0
VERBATIM
{ void* vv;
vv = *((void**)(&space));
if (vv) {
vector_resize(vv, 0);
}
}
ENDVERBATIM
check()
}
BREAKPOINT {
SOLVE check METHOD after_cvode
}
PROCEDURE check() {
VERBATIM
int size; double* px; void* vv;
if (cai >= thresh && !firing) {
firing = 1;
time = t;
high = 1;
max=cai;
}
if(high) {
if (cai<=thresh && t>time){
n += 1.;
vv = *((void**)(&space));
if (vv) {
size = (int)n;
vector_resize(vv, size);
px = vector_vec(vv);
px[size-1] = max;
}
high=0;
}
if(cai>max){
max=cai;
}
}
if (firing && cai < thresh && t > time) {
firing = 0;
}
ENDVERBATIM
}
PROCEDURE record() {
VERBATIM
void** vv;
vv = (void**)(&space);
*vv = (void*)0;
if (ifarg(1)) {
*vv = vector_arg(1);
}
ENDVERBATIM
}