Updated Tritonia Swim CPG (Calin-Jagemann et al. 2007)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:93325
Model of the 3-cell core CPG (DSI, C2, and VSI-B) mediating escape swimming in Tritonia diomedea. Cells use a hybrid integrate-and-fire scheme pioneered by Peter Getting. Each model cell is reconstructed from extensive physiological measurements to precisely mimic I-F curves, synaptic waveforms, and functional connectivity.
Reference:
1 . Calin-Jageman RJ, Tunstall MJ, Mensh BD, Katz PS, Frost WN (2007) Parameter space analysis suggests multi-site plasticity contributes to motor pattern initiation in Tritonia. J Neurophysiol 98:2382-98 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Tritonia;
Cell Type(s): Tritonia swim interneuron dorsal; Tritonia cerebral cell; Tritonia swim interneuron ventral;
Channel(s): I A;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Bursting; Oscillations; Invertebrate;
Implementer(s): Calin-Jageman, Robert [rcalinjageman at gsu dot edu]; Mensh, Brett ; Frost, William N; Katz, Paul S; Tunstall, Mark ;
Search NeuronDB for information about:  I A;
proc readsyn() {localobj synfile
	synfile = new File()
	synfile.ropen($s1)
	

	$o2.G1_weight = synfile.scanvar()
	$o2.G1_eRev = synfile.scanvar()
	$o2.G1_opentc = synfile.scanvar()
	$o2.G1_closetc = synfile.scanvar()

	$o2.G2_weight = synfile.scanvar()
	$o2.G2_eRev = synfile.scanvar()
	$o2.G2_opentc = synfile.scanvar()
	$o2.G2_closetc = synfile.scanvar()

	$o2.G3_weight = synfile.scanvar()
	$o2.G3_eRev = synfile.scanvar()
	$o2.G3_opentc = synfile.scanvar()
	$o2.G3_closetc = synfile.scanvar()

	w1 = $o2.G1_weight 
	tc1 = $o2.G1_closetc 
	
	w2 = $o2.G2_weight 
	tc2 = $o2.G2_closetc 

	w3 = $o2.G3_weight 
	tc3 = $o2.G3_closetc 
	
}

/* 
Written by Bob Calin-Jageman

*/
load_file("nrngui.hoc")

// chdir("c:/sims/nfrost")
// chdir("mods")
// nrn_load_dll("nrnmech.dll")
// chdir("..")

load_file("celltypes/C2Type.hoc") 
load_file("celltypes/DSIType.hoc")
load_file("celltypes/VSIType.hoc")
load_file("celltypes/IFType.hoc")
load_file("celltypes/IFType.hoc")
load_file("celltypes/DRIType.hoc")

objref C2, DSI, VSI, DRI, VSINA, IF, synlist, outfile
strdef runcode, experiment, outfilename

experiment = "none"
runcode = "single"

outfile = new File()
outfile.aopen("bursts.txt")
strdef dstring

C2 = new C2Type()
DSI = new DSIType()
VSI = new VSIType()
IF = new IFType()
synlist = new List()
DRI = new DRIType()

objectvar DSI_DSIs, DSI_DSInc
DSI.soma {DSI_DSIs = new tholdsyn(0.5)}
access DSI.soma
DSI_DSInc = new NetCon(&v(0.5), DSI_DSIs, 0, 0, 1)
synlist.append(DSI_DSIs)

objectvar VSI_VSIs, VSI_VSInc
VSI.soma {VSI_VSIs = new tholdsyn(0.5)}
access VSI.soma
VSI_VSInc = new NetCon(&v(0.5), VSI_VSIs, 0, 0, 1)
synlist.append(VSI_VSIs)

readsyn("syndefs/DSI_DSI.txt", DSI_DSIs)
readsyn("syndefs/VSI_VSI.txt", VSI_VSIs)

access C2.soma
load_file("ses/cpg.ses")
tstop = 42000

objref cellpointer, spikeholder
cellpointer = VSI

objref mysyns
mysyns = new List("tholdsyn")

proc init() {local x



			finitialize(v_init)
			fcurrent()
			
			spikeholder = new Vector()
			lastsp1 = 0
			
			C2.soma.v = C2.ileak.vrest
			DSI.soma.v = DSI.ileak.vrest
			VSI.soma.v = VSI.ileak.vrest
			
		}

proc advance() {
	
	if (cellpointer.sthold.lastspike != lastsp1) {
		//print t
		spikeholder.append(t)
		lastsp1 = cellpointer.sthold.lastspike
	}

	fadvance()
	
}

proc cfplot() {local x, delay, firstsp, lastsp, y, offset localobj istim, outf
	access $o1.soma
	istim = new IClamp(0.5)
	offset = $2
	istim.del = offset
	istim.dur = 5000
	cellpointer = $o1
	outf = new File()
	outf.aopen("cfplot.txt")
	for (x=$3; x < $4; x = x + 0.5) {
		istim.amp = x
		init()
		run()
		delay = 0
		firstsp = 0
		lastsp = 0
		if (spikeholder.size() > 2) {
		for (y=1; y < spikeholder.size(); y = y + 1) {
			if ((spikeholder.x[y-1] > offset) && (spikeholder.x[y-1] < (offset+10000))) {
				lastsp = spikeholder.x[y] - spikeholder.x[y-1]
				if (firstsp == 0) {firstsp = lastsp }
				if (delay ==0) {delay = spikeholder.x[y-1] - 1000 }
			}
		}
		}	
		if (lastsp != 0) {	
		print $o1, x, delay, 1/(firstsp/1000), 1/(lastsp/1000)
		}
		if (lastsp != 0) {
		outf.printf("%s	%f	%f	%f	%f\n", $o1, x, delay, 1/(firstsp/1000), 1/(lastsp/1000))
		} else {
		outf.printf("%s	%f	%f	%f	%f\n", $o1, x, delay, firstsp, lastsp)
		}
	}
	istim.amp = 0
	outf.close()
}



Loading data, please wait...