Encoding and retrieval in a model of the hippocampal CA1 microcircuit (Cutsuridis et al. 2009)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:123815
This NEURON code implements a small network model (100 pyramidal cells and 4 types of inhibitory interneuron) of storage and recall of patterns in the CA1 region of the mammalian hippocampus. Patterns of PC activity are stored either by a predefined weight matrix generated by Hebbian learning, or by STDP at CA3 Schaffer collateral AMPA synapses.
Reference:
1 . Cutsuridis V, Cobb S, Graham BP (2010) Encoding and retrieval in a model of the hippocampal CA1 microcircuit. Hippocampus 20:423-46 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism: Hippocampus;
Cell Type(s): Hippocampus CA1 pyramidal cell; Hippocampus CA1 basket cell;
Channel(s):
Gap Junctions:
Receptor(s): GabaA; AMPA; NMDA;
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Pattern Recognition; Activity Patterns; Temporal Pattern Generation; Learning; STDP; Connectivity matrix; Storage/recall;
Implementer(s): Graham, Bruce [B.Graham at cs.stir.ac.uk]; Cutsuridis, Vassilis [vcutsuridis at gmail.com];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal cell; GabaA; AMPA; NMDA;
/
Hipp_paper_code
Results
Weights
readme.txt
ANsyn.mod *
bgka.mod *
burststim2.mod *
cad.mod *
cagk.mod *
cal.mod *
calH.mod *
car.mod *
cat.mod *
ccanl.mod *
gskch.mod *
h.mod *
hha_old.mod *
hha2.mod *
hNa.mod *
IA.mod *
ichan2.mod *
Ih.mod *
kad.mod *
kap.mod *
Kaxon.mod *
kca.mod *
Kdend.mod *
km.mod *
Ksoma.mod *
LcaMig.mod *
my_exp2syn.mod *
Naaxon.mod *
Nadend.mod *
Nasoma.mod *
nca.mod *
nmda.mod *
regn_stim.mod *
somacar.mod *
STDPE2Syn.mod *
axoaxonic_cell17S.hoc *
basket_cell17S.hoc *
bistratified_cell13S.hoc *
burst_cell.hoc *
HAM_SR.ses
HAM_StoRec_par.hoc
HAM_StoRec_ser.hoc
mosinit.hoc
olm_cell2.hoc
pyramidal_cell_14Vb.hoc
ranstream.hoc *
stim_cell.hoc *
                            
TITLE HH channel that includes both a sodium and a delayed rectifier channel 
: and accounts for sodium conductance attenuation
: Bartlett Mel-modified Hodgkin - Huxley conductances (after Ojvind et al.)
: Terrence Brannon-added attenuation 
: Yiota Poirazi-modified Kdr and Na threshold and time constants
: to make it more stable, 2000, poirazi@LNC.usc.edu
: Used in all BUT somatic and axon sections. The spike threshold is about -50 mV

NEURON {
	SUFFIX hha_old
	USEION na READ ena WRITE ina 
	USEION k READ ek WRITE ik
	NONSPECIFIC_CURRENT il
	RANGE gnabar, gkbar, gl, el
	RANGE ar2, vhalfs
	RANGE inf, fac, tau
	RANGE taus
	RANGE W
	GLOBAL taumin
}

UNITS {
	(mA) = (milliamp)
	(mV) = (millivolt)
}

INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}

PARAMETER {   : parameters that can be entered when function is called in cell-setup
        a0r = 0.0003 (ms)
        b0r = 0.0003 (ms)
        zetar = 12    
	zetas = 12   
        gmr = 0.2   
	ar2 = 1.0               :initialized parameter for location-dependent
                                :Na-conductance attenuation, "s", (ar=1 -> zero attenuation)
	taumin = 3   (ms)       :min activation time for "s" attenuation system
        vvs  = 2     (mV)       :slope for "s" attenuation system
        vhalfr = -60 (mV)       :half potential for "s" attenuation system
	W = 0.016    (/mV)      :this 1/61.5 mV
:	gnabar = 0.2 (mho/cm2)  :suggested conductance values
:	gkbar = 0.12 (mho/cm2)
:	gl = 0.0001  (mho/cm2)
        gnabar = 0   (mho/cm2)  :initialized conductances
	gkbar = 0    (mho/cm2)  :actual values set in cell-setup.hoc
	gl = 0       (mho/cm2)
	ena = 60     (mV)       :Na reversal potential (also reset in
	ek = -77     (mV)       :K reversal potential  cell-setup.hoc)
	el = -70.0   (mV)       :steady state 
	celsius = 34 (degC)
	v            (mV)
        dt           (ms)
}

STATE {                         : the unknown parameters to be solved in the DEs
	m h n s
}

ASSIGNED {			: parameters needed to solve DE
	ina (mA/cm2)
	ik (mA/cm2)
	il (mA/cm2)
	inf[4]
	fac[4]
	tau[4]
}

BREAKPOINT {
	SOLVE states
	ina = gnabar*m*m*h*s*(v - ena) :Sodium current
	ik = gkbar*n*n*(v - ek)        :Potassium current
	il = gl*(v - el)               :leak current
}

INITIAL {                       : initialize the following parameter using states()
	states()
	s=1
	ina = gnabar*m*m*h*s*(v - ena)
	ik = gkbar*n*n*(v - ek)
	il = gl*(v - el)
}

PROCEDURE calcg() {
	mhn(v*1(/mV))
	m = m + fac[0]*(inf[0] - m)   :Na activation variable
	h = h + fac[1]*(inf[1] - h)   :Na inactivation variable
	n = n + fac[2]*(inf[2] - n)   :K activation variable
	s = s + fac[3]*(inf[3] - s)   :Na attenuation variable
}	

PROCEDURE states() {	: exact when v held constant
	calcg()
	VERBATIM
	return 0;
	ENDVERBATIM
}


FUNCTION varss(v, i) { :steady state values
	if (i==0) {
		varss = 1 / (1 + exp((v + 40)/(-3))) :Na activation
	}
	else if (i==1) {
		varss = 1 / (1 + exp((v + 45)/(3)))  :Na inactivation
	}
	else if (i==2) {	
		varss = 1 / (1 + exp((v + 42)/(-2))) :K activation

	} else {
                :"s" activation system for spike attenuation - Migliore 96 model
		varss = alpv(v,vhalfr)
       }
}


FUNCTION alpv(v(mV),vh) {    :used in "s" activation system infinity calculation
  alpv = (1+ar2*exp((v-vh)/vvs))/(1+exp((v-vh)/vvs))
}

FUNCTION alpr(v(mV)) {       :used in "s" activation system tau
  alpr = exp(1.e-3*zetar*(v-vhalfr)*9.648e4/(8.315*(273.16+celsius))) 
}

FUNCTION betr(v(mV)) {       :used in "s" activation system tau
  betr = exp(1.e-3*zetar*gmr*(v-vhalfr)*9.648e4/(8.315*(273.16+celsius))) 
}

FUNCTION vartau(v, i) { :estimate tau values
	LOCAL tmp
	if (i==0) {
	   vartau = 0.05      :Na activation tau
	}
	else if (i==1) {
           vartau = 0.5       :Na inactivation tau
        }
	else if (i==2) {
            vartau = 2.2      :K activation tau
       	} else {
	     tmp = betr(v)/(a0r+b0r*alpr(v)) 
	     if (tmp<taumin) {tmp=taumin}
	VERBATIM
	ENDVERBATIM
	     vartau = tmp      :s activation tau
       }
}	

PROCEDURE mhn(v) {
:       TABLE infinity, tau, fac DEPEND dt, celsius FROM -100 TO 100 WITH 200
	FROM i=0 TO 3 {
		tau[i] = vartau(v,i)
		inf[i] = varss(v,i)
		fac[i] = (1 - exp(-dt/tau[i]))
	}
}