Multiscale simulation of the striatal medium spiny neuron (Mattioni & Le Novere 2013)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:150284
"… We present a new event-driven algorithm to synchronize different neuronal models, which decreases computational time and avoids superfluous synchronizations. The algorithm is implemented in the TimeScales framework. We demonstrate its use by simulating a new multiscale model of the Medium Spiny Neuron of the Neostriatum. The model comprises over a thousand dendritic spines, where the electrical model interacts with the respective instances of a biochemical model. Our results show that a multiscale model is able to exhibit changes of synaptic plasticity as a result of the interaction between electrical and biochemical signaling. …"
Reference:
1 . Mattioni M, Le Novère N (2013) Integration of biochemical and electrical signaling-multiscale model of the medium spiny neuron of the striatum. PLoS One 8:e66811 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell; Synapse;
Brain Region(s)/Organism: Striatum;
Cell Type(s): Neostriatum medium spiny direct pathway GABA cell;
Channel(s): I Na,p; I Na,t; I T low threshold; I A; I K,Ca; I CAN; I Calcium; I A, slow; I Krp; I R; I Q;
Gap Junctions:
Receptor(s):
Gene(s): Kv4.2 KCND2; Kv1.2 KCNA2; Cav1.3 CACNA1D; Cav1.2 CACNA1C; Kv2.1 KCNB1;
Transmitter(s):
Simulation Environment: NEURON; Python;
Model Concept(s): Synaptic Plasticity; Signaling pathways; Calcium dynamics; Multiscale;
Implementer(s): Mattioni, Michele [mattioni at ebi.ac.uk];
Search NeuronDB for information about:  Neostriatum medium spiny direct pathway GABA cell; I Na,p; I Na,t; I T low threshold; I A; I K,Ca; I CAN; I Calcium; I A, slow; I Krp; I R; I Q;
//****************************************************************************
// basic_procs.hoc defines procedures for setting conductances and range
// variables of channels - these are primarily used to change variables
// from the gui

proc set_pas() {    NEW_GPAS = $1
    forall if (ismembrane("pas")) {g_pas = NEW_GPAS}
	nG_PAS = NEW_GPAS
}


//*****************
// Sodium conductance settings

proc set_naf() {		NEW_GBAR = $1
	nG_NAF = NEW_GBAR
	forsec "soma" {gnabar_naf = nG_NAF}

 }

proc set_nafd() {		NEW_GBAR = $1
	nG_NAFD = NEW_GBAR
	forsec "dend.*" {gnabar_naf = nG_NAFD}
}

proc set_nap() {		NEW_GBAR = $1
	nG_NAP = NEW_GBAR
	forsec "soma" {gnabar_nap = nG_NAP}
	}

proc set_napd() {		NEW_GBAR = $1
	nG_NAPD = NEW_GBAR
	forsec "dend.*" {gnabar_nap = nG_NAPD}
}

//*****************


	


//*****************
// Potassium conductance settings

proc set_ek() {	newEK = $1
	forsec "MSP" {ek = newEK}
	EK = newEK
}

proc set_kir() {		NEW_GBAR = $1
	nG_KIR = NEW_GBAR
	forall if (ismembrane("kir")) {gkbar_kir = nG_KIR}
}

proc set_kas() {		NEW_GBAR = $1
	nG_KAS = NEW_GBAR
	forsec "soma" {gkbar_kas = nG_KAS}
	MSP_Cell[0].dend1 gkbar_kas = nG_KAS
	MSP_Cell[0].dend2 gkbar_kas = nG_KAS
	MSP_Cell[0].dend3 gkbar_kas = nG_KAS
	MSP_Cell[0].dend4 gkbar_kas = nG_KAS
 }

proc set_kasd() {		NEW_GBAR = $1
	nG_KASD = NEW_GBAR
	forsec "dend._.*" {gkbar_kas = nG_KASD}
}
proc set_kaf() {		NEW_GBAR = $1
	nG_KAF = NEW_GBAR
	forsec "soma" {gkbar_kaf = nG_KAF}
	MSP_Cell[0].dend1 gkbar_kaf = nG_KAF
	MSP_Cell[0].dend2 gkbar_kaf = nG_KAF
	MSP_Cell[0].dend3 gkbar_kaf = nG_KAF
	MSP_Cell[0].dend4 gkbar_kaf = nG_KAF

}

proc set_kafd() {		NEW_GBAR = $1
	nG_KAFD = NEW_GBAR
	forsec "dend._.*" {gkbar_kaf = nG_KAFD}
}

proc set_krp() {		NEW_GBAR = $1
	nG_KRP = NEW_GBAR
	forall if (ismembrane("krp")) {gkbar_krp = NEW_GBAR}
}

proc set_bkkca() {		NEW_GBAR = $1
	nG_BKKCA = NEW_GBAR
	forall if(ismembrane("bkkca")) {gkbar_bkkca = NEW_GBAR}
}

proc set_skkca() {		NEW_GBAR = $1
	nG_SKKCA = NEW_GBAR
	forall if(ismembrane("skkca")) {gkbar_skkca = NEW_GBAR}
}

//*****************





//******************
// Calcium conductance settings

proc set_caL() {		NEW_PBAR = $1
	nP_CAL = NEW_PBAR
	forall if (ismembrane("caL")) {pbar_caL = NEW_PBAR}
}

proc set_caL13() {		NEW_PBAR = $1
	nP_CAL13 = NEW_PBAR
	forall if (ismembrane("caL13")) {pcaLbar_caL13 = NEW_PBAR}
}

proc set_can() {		NEW_PBAR = $1
	nP_CAN = NEW_PBAR
	forall if (ismembrane("can")) {pbar_can = NEW_PBAR}
}

proc set_caq() {		NEW_PBAR = $1
	nP_CAQ = NEW_PBAR
	forall if (ismembrane("caq")) {pcaqbar_caq = NEW_PBAR}
}

proc set_car() {		NEW_PBAR = $1
	nP_CAR = NEW_PBAR
	forall if (ismembrane("car")) {pcarbar_car = NEW_PBAR}
}
proc set_cat() {		NEW_PBAR = $1
	nP_CAT = NEW_PBAR
	forall if (ismembrane("cat")) {pcatbar_cat = NEW_PBAR}
}

//******************





//******************
// Calcium dynamics procs

proc set_cainf() {	NEW_CAINF = $1
	nCA_INF = NEW_CAINF
	forall if (ismembrane("cadyn")) {cainf_cadyn = NEW_CAINF}
	forall if (ismembrane("caldyn")) {cainf_caldyn = NEW_CAINF}
}

proc set_taur() {	NEW_TAUR = $1
	nCA_TAUR = NEW_TAUR
	forall if (ismembrane("cadyn")) {taur_cadyn = NEW_TAUR}
	forall if (ismembrane("caldyn")) {taur_caldyn = NEW_TAUR}
}
proc set_cadrive() { 	NEW_DRIVE = $1
	nCA_DRIVE = NEW_DRIVE
	forall if (ismembrane("cadyn")) {drive_cadyn = NEW_DRIVE}
	forall if (ismembrane("caldyn")) {drive_caldyn = NEW_DRIVE}
}
proc set_pump() {	NEW_PUMP = $1
	nCA_PUMP = NEW_PUMP
	forall if (ismembrane("cadyn")) {pump_cadyn = NEW_PUMP}
	forall if (ismembrane("caldyn")) {pump_caldyn = NEW_PUMP}
}
//******************