Layer V pyramidal cell functions and schizophrenia genetics (Mäki-Marttunen et al 2019)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:249463
Study on how GWAS-identified risk genes of shizophrenia affect excitability and integration of inputs in thick-tufted layer V pyramidal cells
Reference:
1 . Mäki-Marttunen T, Devor A, Phillips WA, Dale AM, Andreassen OA, Einevoll GT (2019) Computational modeling of genetic contributions to excitability and neural coding in layer V pyramidal cells: applications to schizophrenia pathology Front. Comput. Neurosci. 13:66
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Neocortex;
Cell Type(s):
Channel(s): I A; I M; I h; I K,Ca; I Calcium; I A, slow; I Na,t; I Na,p; I L high threshold; I T low threshold;
Gap Junctions:
Receptor(s): AMPA; NMDA; Gaba;
Gene(s):
Transmitter(s): Glutamate; Gaba;
Simulation Environment: NEURON; Python;
Model Concept(s): Schizophrenia; Dendritic Action Potentials; Action Potential Initiation; Synaptic Integration;
Implementer(s): Maki-Marttunen, Tuomo [tuomo.maki-marttunen at tut.fi];
Search NeuronDB for information about:  AMPA; NMDA; Gaba; I Na,p; I Na,t; I L high threshold; I T low threshold; I A; I M; I h; I K,Ca; I Calcium; I A, slow; Gaba; Glutamate;
/
l5pc_scz
almog
cells
README.html
BK.mod *
ca_h.mod
ca_r.mod
cad.mod *
epsp.mod *
ih.mod *
kfast.mod
kslow.mod
na.mod
ProbAMPANMDA2.mod *
ProbUDFsyn2.mod *
SK.mod *
best.params *
calcifcurves2.py
calcifcurves2_comb_one.py
calcnspikesperburst.py
calcsteadystate.py
calcupdownresponses.py
cc_run.hoc *
coding.py
coding_comb.py
coding_nonprop_somaticI.py
coding_nonprop_somaticI_comb.py
collectifcurves2_comb_one.py
collectthresholddistalamps.py
combineppicoeffs_comb_one.py
drawfigcomb.py
drawnspikesperburst.py
findppicoeffs.py
findppicoeffs_merge.py
findppicoeffs_merge_comb_one.py
findthresholdbasalamps_coding.py
findthresholddistalamps.py
findthresholddistalamps_coding.py
findthresholddistalamps_comb.py
main.hoc *
model.hoc *
model_withsyns.hoc
mosinit.hoc *
mutation_stuff.py
myrun.hoc *
myrun_withsyns.hoc
mytools.py
params.hoc *
protocol.py
savebasalsynapselocations_coding.py
savesynapselocations_coding.py
scalemutations.py
scalings_cs.sav
setparams.py
synlocs450.0.sav
                            
from neuron import h
import matplotlib
matplotlib.use('Agg')
import numpy
from pylab import *
import mytools
import pickle
import time
import sys
import random

random.seed(1)

maxLen = 1325
Nsyns = 1000

lensToStart = [0.0 + x*200 for x in range(0,6)]
lensToEnd = [200.0 + x*200 for x in range(0,5)]+[1325.]
maxSynsPerSegArray = [48,40,124,250,112,24]

if len(sys.argv) > 1:
  lenToStart = lensToStart[int(sys.argv[1])]
  lenToEnd = lensToEnd[int(sys.argv[1])]
if len(sys.argv) > 2:
  maxSynsPerSeg = maxSynsPerSegArray[int(sys.argv[2])]
elif len(sys.argv) > 1:
  maxSynsPerSeg = maxSynsPerSegArray[int(sys.argv[1])]
else:
  maxSynsPerSeg = 40

synlocs = []

h("""
load_file("myrun.hoc")
objref cvode, tvec
cvode = new CVode()
cvode.active(1)
cvode.atol(0.001)

access a_soma
double siteVec[2]
tvec = new Vector()
objref sl,syns["""+str(Nsyns)+"""]
sl = new List()
""")
synsInSegs = [0]*len(h.apic)
for istim in range(0,Nsyns):
  myiseg = -1
  while myiseg == -1:
    x = lenToStart+(lenToEnd-lenToStart)*random.random()
    h("""sl = locateSites(\"apic\","""+str(x)+""")
Nsegs_x = sl.count()
""")
    iseg = random.randint(0,h.Nsegs_x-1)
    h("myseg = sl.o["+str(iseg)+"].x[0]")
    if synsInSegs[int(h.myseg)] < maxSynsPerSeg:
      myiseg = int(h.myseg)
      break
    print "istim = "+str(istim)+", x = "+str(x)+", continue searching for myseg..."
  synsInSegs[myiseg] = synsInSegs[myiseg] + 1
  h("""
siteVec[0] = sl.o["""+str(iseg)+"""].x[0]
siteVec[1] = sl.o["""+str(iseg)+"""].x[1]
apic[siteVec[0]] {
  syns["""+str(istim)+"""] = new AlphaSynapse(siteVec[1])
  syns["""+str(istim)+"""].e = 0
  syns["""+str(istim)+"""].tau = 5
  syns["""+str(istim)+"""].onset = 10000
}
""")
  synlocs.append([h.siteVec[0],h.siteVec[1]])
  
picklelist = [Nsyns,maxSynsPerSeg,maxLen,synlocs]
file = open('synlocs'+str(lenToStart)+'-'+str(lenToEnd)+'.sav', 'w')
pickle.dump(picklelist,file)
file.close()