STDP promotes synchrony of inhibitory networks in the presence of heterogeneity (Talathi et al 2008)

 Download zip file 
Help downloading and running models
Accession:119159
"Recently Haas et al. (J Neurophysiol 96: 3305–3313, 2006), observed a novel form of spike timing dependent plasticity (iSTDP) in GABAergic synaptic couplings in layer II of the entorhinal cortex. Depending on the relative timings of the presynaptic input at time tpre and the postsynaptic excitation at time tpost, the synapse is strengthened (delta_t = t(post) - t(pre) > 0) or weakened (delta_t < 0). The temporal dynamic range of the observed STDP rule was found to lie in the higher gamma frequency band (> or = 40 Hz), a frequency range important for several vital neuronal tasks. In this paper we study the function of this novel form of iSTDP in the synchronization of the inhibitory neuronal network. In particular we consider a network of two unidirectionally coupled interneurons (UCI) and two mutually coupled interneurons (MCI), in the presence of heterogeneity in the intrinsic firing rates of each coupled neuron. ..."
Reference:
1 . Talathi SS, Hwang DU, Ditto WL (2008) Spike timing dependent plasticity promotes synchrony of inhibitory networks in the presence of heterogeneity. J Comput Neurosci 25:262-81 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Entorhinal cortex;
Cell Type(s):
Channel(s): I Na,t; I K;
Gap Junctions:
Receptor(s): GabaA; Gaba;
Gene(s):
Transmitter(s):
Simulation Environment: C or C++ program;
Model Concept(s): STDP;
Implementer(s): Talathi Sachin [talathi at ufl.edu];
Search NeuronDB for information about:  GabaA; Gaba; I Na,t; I K;
/
TalathiEtAl2008
simul_lrn
CNlib
CVS
readme *
CN_absynapse.cc *
CN_absynapse.h *
CN_absynapseECplast1.cc *
CN_absynapseECplast1.h *
CN_absynapseECplast2.cc *
CN_absynapseECplast2.h *
CN_absynapseECplast3.cc *
CN_absynapseECplast3.h *
CN_DCInput.cc *
CN_DCInput.h *
CN_ECneuron.cc *
CN_ECneuron.h *
CN_HHneuron.cc *
CN_HHneuron.h *
CN_inputneuron.cc *
CN_inputneuron.h *
CN_LPneuronAstrid.cc *
CN_LPneuronAstrid.h *
CN_LPneuronRafi4.cc *
CN_LPneuronRafi4.h *
CN_multifire_inputneuron.cc *
CN_multifire_inputneuron.h *
CN_neuron.cc *
CN_neuron.h *
CN_NeuronModel.cc *
CN_NeuronModel.h *
CN_Poissonneuron.cc *
CN_Poissonneuron.h *
CN_Rallsynapse.cc *
CN_Rallsynapse.h *
CN_rk65n.cc *
CN_rk65n.h *
CN_synapse.cc *
CN_synapse.h *
CN_synapseAstrid.cc *
CN_synapseAstrid.h *
CN_TimeNeuron.cc *
CN_TimeNeuron.h *
CN_Valneuron.cc *
CN_Valneuron.h *
CN_Valneuron2.cc *
CN_Valneuron2.h *
ids.h *
Makefile *
testCN *
testCN.cc *
                            
//--------------------------------------------------------------------------
// Author: Thomas Nowotny
//
// Institute: Institute for Nonlinear Dynamics
//            University of California San Diego
//            La Jolla, CA 92093-0402
//
// email to:  tnowotny@ucsd.edu
//
// initial version: 2005-08-17
//
//--------------------------------------------------------------------------


#ifndef CN_NEURON_CC
#define CN_NEURON_CC

#include "CN_neuron.h"

neuron::neuron(int inlabel, int iniVarNo, int intype, double *inp, int inpno)
{
  label= inlabel;
  iVarNo= iniVarNo;
  type= intype;
  pno= inpno;
  if (pno > 0) {
    p= new double[pno];
    set_p(inp);
  }
  den_it= den.iterator();
  start_spiking= 0;
  spiking= 0;
  spike_time= -1.0;

  // we don't know our index number yet
  idx= 0;
  enabled= 0;
}

neuron::neuron(int inlabel, int iniVarNo, int intype, tnvector<int> inpos,
	       double *inp, int inpno)
{
  label= inlabel;
  iVarNo= iniVarNo;
  type= intype;
  pno= inpno;
  if (pno > 0) {
    p= new double[pno];
    set_p(inp);
  }
  pos.resize(inpos.dim());
  pos= inpos;
  den_it= den.iterator();
  start_spiking= 0;
  spiking= 0;
  spike_time= -1.0;

 // we don't know our index number yet
  idx= 0;
  enabled= 0;
}

neuron::~neuron()
{
  forall(den_it) {
    den_it->c_value()->target= NULL;
  }
  delete den_it;
  delete[] p;
}

void neuron::set_p(double *inp)
{
  for (int i= 0; i < pno; i++) p[i]= inp[i];
}

void neuron::spike_detect(double *x)
{
  assert(enabled);
  if (E(x) >= SPK_V_THRESH)
  {
    if (!spiking)
    {
      start_spiking= 1;
      spiking= 1;
      spike_time= x[0];
    }
    else start_spiking= 0;
  }
  else {
    spiking= 0;
    start_spiking= 0;
  }
}

void neuron::init(double *x, double *iniVars)
{
  assert(enabled);
  for (int i= 0; i < iVarNo; i++)
  {
    x[idx+i]= iniVars[i];
  }
  start_spiking= 0;
  spiking= 0;
  spike_time= -1.0;
}

void neuron::setIdx(int inidx)
{
  assert(!enabled);
  idx= inidx;
  enabled= 1;
}

#endif


Loading data, please wait...