Shaping NMDA spikes by timed synaptic inhibition on L5PC (Doron et al. 2017)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:231427
This work (published in "Timed synaptic inhibition shapes NMDA spikes, influencing local dendritic processing and global I/O properties of cortical neurons", Doron et al, Cell Reports, 2017), examines the effect of timed inhibition over dendritic NMDA spikes on L5PC (Based on Hay et al., 2011) and CA1 cell (Based on Grunditz et al. 2008 and Golding et al. 2001).
Reference:
1 . Doron M, Chindemi G, Muller E, Markram H, Segev I (2017) Timed Synaptic Inhibition Shapes NMDA Spikes, Influencing Local Dendritic Processing and Global I/O Properties of Cortical Neurons. Cell Rep 21:1550-1561 [PubMed]
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): Neocortex L5/6 pyramidal GLU cell;
Channel(s): 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;
Gap Junctions:
Receptor(s): NMDA; GabaA; AMPA;
Gene(s):
Transmitter(s): Glutamate; Gaba;
Simulation Environment: NEURON;
Model Concept(s): Active Dendrites; Detailed Neuronal Models;
Implementer(s): Doron, Michael [michael.doron at mail.huji.ac.il];
Search NeuronDB for information about:  Neocortex L5/6 pyramidal GLU cell; GabaA; AMPA; NMDA; 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;
/
reproduction
readme.txt
ampa.mod
Ca_HVA.mod
Ca_LVAst.mod *
cad.mod *
cadiffus.mod
CaDynamics_E2.mod *
canmda.mod *
car.mod *
gabaa.mod *
gabab.mod *
Ih.mod *
Im.mod *
K_Pst.mod *
K_Tst.mod *
Nap_Et2.mod *
NaTa_t.mod *
NaTs2_t.mod *
nmda.mod *
ProbAMPA.mod
ProbAMPANMDA2_ratio.mod *
ProbUDFsyn2_lark.mod *
SK_E2.mod *
SKv3_1.mod *
SynExp5NMDA.mod *
cell1.asc *
cellmorphology.hoc *
create_data_for_figure_01.py
create_data_for_figure_02.py
create_data_for_figure_03.py *
create_data_for_figure_03_control.py
create_data_for_figure_03_Dt_10.py *
create_data_for_figure_03_Dt_40.py *
data_same_excitation.pickle
iniparameter.hoc
L5PCbiophys3.hoc
L5PCbiophys3_noActive.hoc
mosinit.hoc
plot_figure_01.py
plot_figure_02.py
plot_figure_03.py
plot_figure_04.py
plot_figure_05.py
plot_figure_06.py
spikes_num.pickle
spine.hoc
TTC.hoc
                            
#!/usr/bin/python

from neuron import h
from neuron import gui
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt

import numpy as np
import sys
import pickle
import time

startTime = time.time()
h.load_file("nrngui.hoc")
h.load_file("import3d.hoc")

h.tstop = 250
h.v_init = -64

sectionNum = 44;
h.load_file("L5PCbiophys3_noActive.hoc")
h.load_file("TTC.hoc")
h("objref L5PC")
h.L5PC = h.TTC("cell1.asc")
h("forall nseg = 1")
h("forall e_pas = -70")
h("access L5PC.apic[" + str(sectionNum) + "]")
eSynlist = []
ePreconlist = []
iPreconlist = []
eStimlist = []
iStimlist = []
iSynlista = []

def placeNMDA(location):
  eStimlist.append(h.NetStim())
  eStimlist[-1].interval = 1
  eStimlist[-1].number = 1
  eStimlist[-1].start = 100
  eStimlist[-1].noise = 0
  eSynlist.append(h.ProbAMPANMDA2_RATIO(location))
  eSynlist[-1].gmax = 0.0004
  eSynlist[-1].mgVoltageCoeff = 0.08
  
  ePreconlist.append(h.NetCon(eStimlist[-1], eSynlist[-1]))
  ePreconlist[-1].weight[0] = 1
  ePreconlist[-1].delay = 0

def placeGABA(location):
  iStimlist.append(h.NetStim())
  iStimlist[-1].interval = 1
  iStimlist[-1].number = 1
  iStimlist[-1].start = 100
  iStimlist[-1].noise = 0       
  
  iSynlista.append(h.ProbUDFsyn2_lark(location))
  iSynlista[-1].tau_r = 0.18
  iSynlista[-1].tau_d = 5
  iSynlista[-1].e = - 80
  iSynlista[-1].Dep = 0
  iSynlista[-1].Fac = 0
  iSynlista[-1].Use = 0.6
  iSynlista[-1].u0 = 0
  iSynlista[-1].gmax = 0.0007
  
  iPreconlist.append(h.NetCon(iStimlist[-1], iSynlista[-1]))
  iPreconlist[-1].weight[0] = 1
  iPreconlist[-1].delay = 0

voltageVector = h.Vector()
timeVector = h.Vector()
tempVector = h.Vector()
delaysVoltageVector = {}
delaysVoltageNumpy = {}
voltageVector.record(h.L5PC.apic[sectionNum](0.5)._ref_v)
timeVector.record(h._ref_t)
h("access L5PC.apic[" + str(sectionNum) + "]")
h("nseg = 1000")
for i in range(1):
  for location in np.linspace(0.2,0.7,20):
    placeNMDA(location)
  for location in np.linspace(0.915,0.915,1):      
    placeGABA(location)
  for location in np.linspace(0.5,0.5,1):      
    placeGABA(location)
  for location in np.linspace(0.084205474,0.084205474,1):      
    placeGABA(location)

h.finitialize()
h.run()
vec = h.Vector()
vec.copy(voltageVector)

delayDiff = 1
delays = np.array([-100000] + list(np.arange(-20, 60, delayDiff)))

locs = ['far','middle','close']

delaysVoltageNumpy
for loc_ind in range(3):
  for loc_ind_other in range(3):
    iSynlista[loc_ind_other].gmax = 0
  
  iSynlista[loc_ind].gmax = 0.001
  
  delaysVoltageNumpy[locs[loc_ind]] = {}
  for delay in delays:
    for stim in iStimlist:
      stim.start = 100 + delay
    h.run()
    delaysVoltageVector[delay] = h.Vector()
    delaysVoltageVector[delay].copy(voltageVector)
    delaysVoltageNumpy[locs[loc_ind]][delay] = np.array(delaysVoltageVector[delay])

pickle.dump(delaysVoltageNumpy, open('figure_02_data.pickle', 'wb'),protocol=2)