Drosophila T4 neuron (Gruntman et al 2018)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:239435
Passive, multi-compartment conductance-based model of a T4 cell. The model reproduces the neuron's response to moving stimuli via integration of spatially offset fast excitatory and slow inhibitory inputs.
Reference:
1 . Gruntman E, Romani S, Reiser MB (2018) Simple integration of fast excitation and offset, delayed inhibition computes directional selectivity in Drosophila. Nat Neurosci 21:250-257 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type:
Brain Region(s)/Organism: Drosophila;
Cell Type(s): Fly lobula plate T4 neuron;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Invertebrate;
Implementer(s): Gruntman, Eyal [ gruntmane at janelia.hhmi.org]; Romani, Sandro [ romanis at janelia.hhmi.org];

strdef fileSt1, fileSt2, fileSt3, fileName

// LOAD GUI.
PD = 1
fileSt1 = "vm_trace_PD"


zero_inhib = 0 // logical flag. Determines whether inhibitory synapses would be active
// if 1 inhibition is zeroed. Used in setting_synapse_parameters_mov
if (zero_inhib == 1) {
	fileSt2 = "noI_T"
} else {
	fileSt2 = "noI_F"
}

same_inp = 0 // logical flag. If True (1) all synapses will be placed in the base of dend
//  Used in setting_x_intervals

if (same_inp == 1) {
	fileSt3 = "sameInpt_T.dat"
} else {
	fileSt3 = "sameInpt_F.dat"
}

sprint(fileName, "%s-%s-%s", fileSt1, fileSt2, fileSt3)

v_init = -65 // used for initial conditions
Vleak=-65		// leak reversal -66 in Cs+
seed = 300

{
	load_file("nrngui.hoc")
}

// LOAD MORPHOLOGY.
{
	load_file("loadMorph.hoc")
}

segL = 2		// the length (in microns) of each dendritic segment
forall { ns=int(L/segL+0.5)
        if (ns==0) {
             ns=1
        }
        if ((ns-int(ns/2)*2)==0) {
             ns=ns+1
        }
        nseg = ns
}

objref params, f2
params = new Vector()
f2 = new File()
f2.ropen("parameters.dat")
params.scanf(f2)
f2.close()

taur_e = params.x[0]
taud_e = params.x[1]
taur_i = params.x[2]
taud_i = params.x[3]
a_e = params.x[4]
mu_e = params.x[5]
sigma_e = params.x[6]
a_i = params.x[7]
mu_i = params.x[8]
sigma_i = params.x[9]
 Rm = params.x[10]
 global_ra = params.x[11]

t0 = 0

forall {
	insert pas  g_pas=1/(Rm)  Ra=global_ra  e_pas=Vleak

}

{

	
	load_file("create_cond_vec.hoc")
	load_file("define_dend_axis.hoc")
	load_file("setting_x_intervals.hoc")

}


objref vm_trace, time_trace
vm_trace = new Vector()
time_trace = new Vector()


objref t_stim
t_stim = new Vector(6)

t_stim.x[0] = 20
t_stim.x[1] = 40
t_stim.x[2] = 80
t_stim.x[3] = 160


objref f1, ftime1
f1 = new File()


f1.wopen(fileName)

ftime1 = new File()
ftime1.wopen("time_trace_moving.dat") //same for PD and ND


objref tvec

for ind_t_stim = 0,3 {

	tstop = t_stim.x[ind_t_stim]*11 + 1000
	vecsize = tstop
	tvec = new Vector( vecsize , 0 )
	for i=0, vecsize-2 {
	    tvec.x[i+1] = tvec.x[i] + 1
	}



	load_file(1,"setting_synapse_parameters_mov.hoc") //"1" forces file reloading

	vm_trace.record( &Cell[0].soma[0].v(0.5) )
	time_trace.record( &t )
	printf("t0: %f\t t1:%f\n",t0,t1)

	{
		dt = 0.1
		steps_per_ms = 10

		init()

		run()
	}
	vm_trace.printf(f1)
	time_trace.printf(ftime1)


}
ftime1.close()
f1.close()

quit()

Loading data, please wait...