Action potential reconstitution from measured current waveforms (Alle et al. 2009)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:135838
This NEURON code reconstitutes action potentials in a model of a hippocampal mossy fiber from experimentally measured sodium, potassium and calcium current waveforms as described in Alle et al. (2009).
Reference:
1 . Alle H, Roth A, Geiger JR (2009) Energy-efficient action potentials in hippocampal mossy fibers. Science 325:1405-8 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism:
Cell Type(s): Dentate gyrus granule GLU cell;
Channel(s): I Na,t; I K; I Calcium;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Action Potentials;
Implementer(s): Roth, Arnd ; Alle, Henrik;
Search NeuronDB for information about:  Dentate gyrus granule GLU cell; I Na,t; I K; I Calcium;
TITLE peak.mod

COMMENT

pk: record peak time and peak value of membrane potential
Arnd Roth 25.9.1997
revised   10.9.2008

ENDCOMMENT

UNITS {
	(mV) = (millivolt)
}

INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}

NEURON {
	SUFFIX pk
	RANGE tmin, vmin
	RANGE tpeak, vpeak
	RANGE dvdt, d2vdt2, tdvdtpeak, dvdtpeak, td2vdt2peak, d2vdt2peak
}

PARAMETER {
	tmin	(ms)
	vmin	(mV)
	v	(mV)
}

ASSIGNED {
	tpeak	(ms)
	vpeak	(mV)
	v1	(mV)
	v2	(mV)
	v3	(mV)
	t1	(ms)
	t2	(ms)
	t3	(ms)
	initflag	(1)
	dvdt	(mV/ms)
	d2vdt2	(mV/ms2)
	tdvdtpeak	(ms)
	dvdtpeak	(mV/ms)
	td2vdt2peak	(ms)
	d2vdt2peak	(mV/ms2)
}

INITIAL {
	tpeak = 0	(ms)
	vpeak = -100	(mV)
	v1 = 0	(mV)
	v2 = 0	(mV)
	v3 = 0	(mV)
	t1 = 0	(mV)
	t2 = 0	(mV)
	t3 = 0	(mV)
	initflag = 0		(1)
	dvdt = 0		(mV/ms)
	d2vdt2 = 0		(mV/ms2)
	tdvdtpeak = 0		(ms)
	dvdtpeak = 0		(mV/ms)
	td2vdt2peak = 0		(ms)
	d2vdt2peak = 0		(mV/ms2)
	check()
}

BREAKPOINT {
	SOLVE check METHOD after_cvode
}

PROCEDURE check() {
	if (v > vpeak) {
		tpeak = t
		vpeak = v
	}
	v1 = v2
	v2 = v3
	v3 = v
	t1 = t2
	t2 = t3
	t3 = t
	if (t3 - t2 > 0) {
		dvdt = (v3 - v2)/(t3 - t2)
	}
	if (t3 - t2 > 0 && t2 - t1 > 0) {
		d2vdt2 = (2*(t3*(v2 - v1) + t2*(v1 - v3) + t1*(v3 - v2)))/((t1 - t2)*(t1 - t3)*(t2 - t3))
	}
	if (v > vmin && t > tmin) {
		if (dvdt > dvdtpeak) {
			tdvdtpeak = t
			dvdtpeak = dvdt
		}
		if (dvdt > 0 && d2vdt2 > d2vdt2peak) {
			td2vdt2peak = t
			d2vdt2peak = d2vdt2
		}
	}
}

Loading data, please wait...