Dentate gyrus network model pattern separation and granule cell scaling in epilepsy (Yim et al 2015)

 Download zip file 
Help downloading and running models
The dentate gyrus (DG) is thought to enable efficient hippocampal memory acquisition via pattern separation. With patterns defined as spatiotemporally distributed action potential sequences, the principal DG output neurons (granule cells, GCs), presumably sparsen and separate similar input patterns from the perforant path (PP). In electrophysiological experiments, we have demonstrated that during temporal lobe epilepsy (TLE), GCs downscale their excitability by transcriptional upregulation of ‘leak’ channels. Here we studied whether this cell type-specific intrinsic plasticity is in a position to homeostatically adjust DG network function. We modified an established conductance-based computer model of the DG network such that it realizes a spatiotemporal pattern separation task, and quantified its performance with and without the experimentally constrained leaky GC phenotype. ...
1 . Yim MY, Hanuschkin A, Wolfart J (2015) Intrinsic rescaling of granule cells restores pattern separation ability of a dentate gyrus network model during epileptic hyperexcitability. Hippocampus 25:297-308 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network; Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Dentate gyrus;
Cell Type(s): Dentate gyrus granule GLU cell; Dentate gyrus mossy cell; Dentate gyrus basket cell; Dentate gyrus hilar cell; Dentate gyrus MOPP cell;
Channel(s): I Chloride; I K,leak; I Cl, leak; Kir; Kir2 leak;
Gap Junctions:
Receptor(s): GabaA; AMPA;
Gene(s): IRK; Kir2.1 KCNJ2; Kir2.2 KCNJ12; Kir2.3 KCNJ4; Kir2.4 KCNJ14;
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEURON;
Model Concept(s): Activity Patterns; Spatio-temporal Activity Patterns; Intrinsic plasticity; Pathophysiology; Epilepsy; Homeostasis; Pattern Separation;
Implementer(s): Yim, Man Yi [manyi.yim at]; Hanuschkin, Alexander ; Wolfart, Jakob ;
Search NeuronDB for information about:  Dentate gyrus granule GLU cell; GabaA; AMPA; I Chloride; I K,leak; I Cl, leak; Kir; Kir2 leak; Gaba; Glutamate;
: $Id: netstim.mod 2212 2008-09-08 14:32:26Z hines $
: adapted by A. Hanuschkin 2011 -> output of a 'nspk' spikes in a given interval, if activated!
: netstim is activated by a NET_RECEIVE event. 
: comments at end

  RANGE start, forcestop, status, nspk
  THREADSAFE : only true if every instance has its own distinct Random
  POINTER donotuse

	start		= 50 (ms)	: start of first spike
	forcestop 	= 200 (ms)	: stop of firing spikes
	status 		= 0		: if status=0, no spike is sent
	nspk		= 1		: number of spikes per PP input	

	event (ms)

INITIAL {			: deactivated by default
	on = 0  : off

FUNCTION invl(mean (ms)) (ms) {				      
#ifndef NRN_VERSION_GTEQ_8_2_0
double nrn_random_pick(void* r);
void* nrn_random_arg(int argpos);
#define RANDCAST
#define RANDCAST (Rand*)


FUNCTION erand() {
	if (_p_donotuse) {
		//  printf ("x");
		:Supports separate independent but reproducible streams for
		: each instance. However, the corresponding hoc Random
		: distribution MUST be set to Random.negexp(1)
		_lerand = nrn_random_pick(RANDCAST _p_donotuse);
		/* only can be used in main thread */
		if (_nt != nrn_threads) {
hoc_execerror("multithread random in NetStim"," only via hoc Random");
		: the old standby. Cannot use if reproducible parallel sim
		: independent of nhost or which host this instance is on
		: is desired, since each instance on this cpu draws from
		: the same stream
		erand = exprand(1)

PROCEDURE noiseFromRandom() {
	void** pv = (void**)(&_p_donotuse);
	if (ifarg(1)) {
		*pv = nrn_random_arg(1);
		*pv = (void*)0;

      : printf ("NetStimBox: Net_Receive..\n")
 :    if (flag == 0) {            : if activated & external event -> return spike in the interval defined [start:forcestop]
      if (status == 1) {
	: printf ("NetStimBox: I'm active and got an input spike.... I'll answer with a random event....\n")
	FROM i=1 TO nspk {
  	      event = erand()*(forcestop-start)+start
        	: printf ("%f\t%f\t%f\t%f\t%f\n",erand(),erand(),erand(),erand(),erand())
        	if (event < 0) {
        	         event = 0
		printf ("NetStimBox: Send spike at: %f\n",event)
	status = 0			: switch it off 
 :  }


ModelDB file along with publication:
Yim MY, Hanuschkin A, Wolfart J (2015) Hippocampus 25:297-308.