COMMENT Hines' counter for action potentials after a run, n indicates the number of action potentials that crossed some threshold value (thresh) AD: store the action potential times in vector "times"; calculate ISI and instantaneous rate ENDCOMMENT INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)} DEFINE MAXAP 20000 NEURON { POINT_PROCESS APCounter2 RANGE n, thresh, times, isi, rate } UNITS { (mV) = (millivolt) } PARAMETER { n thresh = 0 (mV) } ASSIGNED { firing times[MAXAP] (ms) isi (ms) rate (1/s) } INITIAL { n = 0 firing = 0 isi = 0 rate = 0 check() } BREAKPOINT { SOLVE check } PROCEDURE check() { if (v >= thresh && !firing) { firing = 1 times[n] = t n = n + 1 if(n>1) { isi = t-times[n-2] rate = 1000/isi } } if (firing && v < thresh) { firing = 0 } }