Ca+/HCN channel-dependent persistent activity in multiscale model of neocortex (Neymotin et al 2016)

 Download zip file 
Help downloading and running models
Accession:185858
"Neuronal persistent activity has been primarily assessed in terms of electrical mechanisms, without attention to the complex array of molecular events that also control cell excitability. We developed a multiscale neocortical model proceeding from the molecular to the network level to assess the contributions of calcium regulation of hyperpolarization-activated cyclic nucleotide-gated (HCN) channels in providing additional and complementary support of continuing activation in the network. ..."
Reference:
1 . Neymotin SA, McDougal RA, Bulanova AS, Zeki M, Lakatos P, Terman D, Hines ML, Lytton WW (2016) Calcium regulation of HCN channels supports persistent activity in a multiscale model of neocortex. Neuroscience 316:344-66 [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; Synapse; Channel/Receptor; Molecular Network;
Brain Region(s)/Organism: Neocortex;
Cell Type(s): Neocortex V1 L6 pyramidal corticothalamic cell; Neocortex V1 L2/6 pyramidal intratelencephalic cell; Neocortex V1 interneuron basket PV cell; Neocortex fast spiking (FS) interneuron; Neocortex spiking regular (RS) neuron; Neocortex spiking low threshold (LTS) neuron; Neocortex layer 2-3 interneuron; Neocortex layer 5 interneuron; Neocortex layer 6a interneuron;
Channel(s): I Na,t; I L high threshold; I T low threshold; I A; I K; I M; I h; I K,Ca; I CAN; I Calcium; I_AHP; I_KD; Ca pump;
Gap Junctions:
Receptor(s): mGluR1; GabaA; GabaB; AMPA; NMDA; mGluR; Glutamate; Gaba; IP3;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: NEURON;
Model Concept(s): Activity Patterns; Ion Channel Kinetics; Oscillations; Spatio-temporal Activity Patterns; Signaling pathways; Working memory; Attractor Neural Network; Calcium dynamics; Laminar Connectivity; G-protein coupled; Rebound firing; Brain Rhythms; Dendritic Bistability; Reaction-diffusion; Beta oscillations; Persistent activity; Multiscale;
Implementer(s): Neymotin, Sam [samn at neurosim.downstate.edu]; McDougal, Robert [robert.mcdougal at yale.edu];
Search NeuronDB for information about:  Neocortex V1 L6 pyramidal corticothalamic cell; Neocortex V1 L2/6 pyramidal intratelencephalic cell; Neocortex V1 interneuron basket PV cell; mGluR1; GabaA; GabaB; AMPA; NMDA; mGluR; Glutamate; Gaba; IP3; I Na,t; I L high threshold; I T low threshold; I A; I K; I M; I h; I K,Ca; I CAN; I Calcium; I_AHP; I_KD; Ca pump; Gaba; Glutamate;
/
CaHDemo
readme.html
cagk.mod
cal.mod *
calts.mod *
can.mod *
cat.mod *
gabab.mod
IC.mod *
icalts.mod *
Ih.mod
ihlts.mod *
IKM.mod *
kap.mod
kcalts.mod *
kdmc.mod
kdr.mod
kdrbwb.mod
km.mod *
mglur.mod *
misc.mod
MyExp2SynBB.mod *
MyExp2SynNMDABB.mod
nafbwb.mod
nax.mod
vecst.mod *
aux_fun.inc *
conf.py
declist.hoc *
decnqs.hoc *
decvec.hoc *
default.hoc *
drline.hoc *
geom.py
ghk.inc *
grvec.hoc
init.hoc
labels.hoc
labels.py *
local.hoc *
misc.h
mpisim.py
netcfg.cfg
nqs.hoc
nqs.py
nrnoc.hoc *
onepyr.cfg
onepyr.py
pyinit.py *
python.hoc *
pywrap.hoc *
screenshot.png
screenshot1.png
simctrl.hoc *
simdat.py
syncode.hoc *
xgetargs.hoc *
                            
import ConfigParser
import io

# default config as string
def_config = """
[seed]
iseed = 1234
wseed = 4321
pseed = 4321
[netsyn]
NMAMREE = 0.1
NMAMREI = 0.1
mGLURR = 0.0
GB2R = 7.5
rdmsec = 1
nmfracca = 0.13
[chan]
ihginc = 2.0
ihscale = 1.0
ilscale = 1.0
ikmscale = 1.0
iark2fctr = 1.0
iark4 = 0.008
erevh = -30.0
h_lambda = 325.0
h_gbar = 0.0025
cagk_gbar = 0.0001
ikc_gkbar = 0.003
expk = 1
cabar = 0.005
[cada]
taur = 5
[run]
indir = data
outdir = data
tstop = 20000.0
dt = 0.1
saveout = 1
simstr = 134mar10_mpi_rxd_test_
dorun = 1
doquit = 0
dodraw = 0
verbose = 0
saveExtra = 0
cvodeactive=0
recdt = 10.0
recvdt = 1.0
binsz = 5
loadtstop = 0
saveconns = 0
[rxd]
CB_frate=5.5
CB_brate=0.0026
CB_init=0.2
gip3 = 120400.0
gserca = 4.0
gleak = 3.0
cacytinit = 100e-6
caerinit = 1.25
caexinit = 0.0
spaceum = 0.0
nsubseg = 0
subsegum = 0.0
[net]
scale=1.0
wirety = swire
IIGain = 0.75e-4
IEGain = 0.1
EIGainFS = 0.002
EIGainLTS = 0.002
EEGain = 0.00025
[mem]
baset = 1e3
nqm = None
useWM = 1
startt = 5e3
nMem = 1
nMemInhib = 0
intert = 4e3
durt = 100
rate = 500
weight = 0.0036
frac = 0.5,0.5,0.5,0.5
mGLURRWM = 1000.0
NMAMRWM = 1.0
AMRWM = 1.0
GARWM = 10.0
same = 0
lastmGLURON = 0
lastdurt = 1e3
apicIDX = 0
pops = E2,E5R,E5B,E6
[stim]
EXGain = 1.0
noise = 1
sgrhzNMI = 300.0
sgrhzNME = 300.0
sgrhzEE = 800.0
sgrhzEI = 800.0
sgrhzIE = 150.0
sgrhzII = 150.0
sgrhzMGLURE = 0.0
sgrhzGB2 = 0.0
"""

# write config file starting with defaults and new entries
# specified in section (sec) , option (opt), and value (val)
# saves to output filepath fn
def writeconf (fn,sec,opt,val):
  conf = ConfigParser.ConfigParser()
  conf.optionxform = str
  conf.readfp(io.BytesIO(def_config)) # start with defaults
  # then change entries by user-specs
  for i in xrange(len(sec)): conf.set(sec[i],opt[i],val[i])
  # write config file
  with open(fn, 'wb') as cfile: conf.write(cfile)

# read config file
def readconf (fn="netcfg.cfg"):
  config = ConfigParser.ConfigParser()
  config.optionxform = str
  config.read(fn)
  def conffloat (base,var,defa): # defa is default value
    val = defa
    try: val=config.getfloat(base,var)
    except: pass
    return val
  def confint (base,var,defa):
    val = defa
    try: val=config.getint(base,var)
    except: pass
    return val
  def confstr (base,var,defa):
    val = defa
    try: val = config.get(base,var)
    except: pass
    return val
  d = {}
  d['iseed'] = confint("seed","iseed",1234)
  d['wseed'] = confint("seed","wseed",4321)
  d['pseed'] = confint("seed","pseed",4321)
  d['NMAMREE'] = conffloat("netsyn","NMAMREE",0.1)
  d['NMAMREI'] = conffloat("netsyn","NMAMREI",0.1)
  d['mGLURR'] = conffloat("netsyn","mGLURR",0.0)
  d['GB2R'] = conffloat("netsyn","GB2R",7.5)
  d['nmfracca'] = conffloat("netsyn","nmfracca", 0.13)
  d['rdmsec'] = confint("netsyn","rdmsec", 1)
  d['erevh'] = conffloat("chan","erevh",-30.0)
  d['h_lambda'] = conffloat("chan","h_lambda",325.0)
  d['h_gbar'] = conffloat("chan","h_gbar",0.006)
  d['cagk_gbar'] = conffloat("chan","cagk_gbar",0.0001)
  d['ikc_gkbar'] = conffloat("chan","ikc_gkbar",0.003)
  d['ihscale'] = conffloat("chan","ihscale", 1.0)
  d['ihginc'] = conffloat("chan","ihginc", 2.0)
  d['ilscale'] = conffloat("chan","ilscale", 1.0)
  d['ikmscale'] = conffloat("chan", "ikmscale", 1.0)
  d['iark2fctr'] = conffloat("chan", "iark2fctr",1.0)
  d['iark4'] = conffloat("chan", "iark4",0.008)
  d['expk'] = confint("chan","expk",1)
  d['cabar'] = conffloat("chan","cabar",0.005)
  d['taurcada'] = conffloat("cada", "taur", 5.0)
  d['outdir'] = confstr("run","outdir", "data")
  d['indir'] = confstr("run","indir", "data")
  d['tstop'] = conffloat("run","tstop", 20000.0)
  d['dt'] = conffloat("run","dt",0.1)
  d['saveout'] = conffloat("run","saveout",1)
  d['simstr'] = confstr("run","simstr","13nov5_mpi_rxd_test_")
  d['dorun'] = confint("run","dorun",1)
  d['recdt'] = conffloat("run","recdt",10.0)
  d['recvdt'] = conffloat("run","recvdt",1.0)
  d['binsz'] = conffloat("run","binsz",5)
  for k in ['doquit','verbose','saveExtra','cvodeactive','dodraw']:d[k] = confint("run",k,0)
  d['CB_frate'] = conffloat("rxd","CB_frate", 5.5)
  d['CB_brate'] = conffloat("rxd","CB_brate", 0.0026)
  d['CB_init'] = conffloat("rxd","CB_init", 0.2)
  d['gip3'] = conffloat("rxd","gip3",120400.0)
  d['gserca'] = conffloat("rxd","gserca",4.0)
  d['gleak'] = conffloat("rxd","gleak",3.0)
  d['caerinit'] = conffloat("rxd","caerinit",1.25)
  d['cacytinit'] = conffloat("rxd","cacytinit",100e-6)
  d['caexinit'] = conffloat("rxd","caexinit",0.0)
  d['spaceum'] = conffloat("rxd","spaceum",0.0)
  d['nsubseg'] = confint("rxd","nsubseg",0)
  d['subsegum'] = conffloat("rxd","subsegum",0.0)
  d['scale'] = conffloat("net","scale",1.0)
  d['wirety'] = confstr("net","wirety","swire")
  d['IIGain'] = conffloat("net","IIGain",0.75e-4)
  d['IEGain'] = conffloat("net","IEGain",0.015)
  d['EIGainFS'] = conffloat("net","EIGainFS",0.002)
  d['EIGainLTS'] = conffloat("net","EIGainLTS",0.002)
  d['EEGain'] = conffloat("net","EEGain",0.00025)
  d['baset'] = conffloat("mem","baset",1e3)
  d['nqm'] = confstr("mem","nqm","None")
  d['useWM'] = confint("mem","useWM",1)
  d['nMem'] = confint("mem","nMem",1)
  d['nMemInhib'] = confint("mem","nMemInhib",0)
  d['memintert'] = conffloat("mem","intert",4e3)
  d['memdurt'] = conffloat("mem","durt",100)
  d['memrate'] = conffloat("mem","rate",500)
  d['memW'] = conffloat("mem","weight",0.0036)
  d['memstartt'] = conffloat("mem","startt",5e3)
  d['memfrac'] = confstr("mem","frac","0.5,0.5,0.5,0.5")
  d['mGLURRWM'] = conffloat("mem","mGLURRWM",1000.0)
  d['NMAMRWM'] = conffloat("mem","NMAMRWM",1.0)
  d['AMRWM'] = conffloat("mem","AMRWM",1.0)
  d['GARWM'] = conffloat("mem","GARWM",10.0)
  d['memSame'] = confint("mem","same",0)
  d['lastmGLURON'] = confint("mem","lastmGLURON",0) # whether last stim is only for mGLUR (rest of mGLUR off)
  d['lastmemdurt'] = conffloat("mem","lastdurt",100)
  d['apicIDX'] = confstr("mem","apicIDX","0")
  d['pops'] = confstr("mem","pops","E2,E5R,E5B,E6")
  d['EXGain'] = conffloat("stim","EXGain",1.0)
  d['noise'] = conffloat("stim","noise",1.0)
  d['sgrhzNME'] = conffloat("stim","sgrhzNME",300.0)
  d['sgrhzNMI'] = conffloat("stim","sgrhzNMI",300.0)
  d['sgrhzEE'] = conffloat("stim","sgrhzEE",800.0)
  d['sgrhzIE'] = conffloat("stim","sgrhzIE",150.0)
  d['sgrhzEI'] = conffloat("stim","sgrhzEI",800.0)
  d['sgrhzII'] = conffloat("stim","sgrhzII",150.0)
  d['sgrhzMGLURE'] = conffloat("stim","sgrhzMGLURE",0.0)
  d['sgrhzGB2'] = conffloat("stim","sgrhzGB2",0.0)
  if config.has_option("net","wnq"): d['wnq'] = config.get("net","wnq")
  return d