Layer V pyramidal cell model with reduced morphology (Mäki-Marttunen et al 2018)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:187474
" ... In this work, we develop and apply an automated, stepwise method for fitting a neuron model to data with fine spatial resolution, such as that achievable with voltage sensitive dyes (VSDs) and Ca2+ imaging. ... We apply our method to simulated data from layer 5 pyramidal cells (L5PCs) and construct a model with reduced neuronal morphology. We connect the reduced-morphology neurons into a network and validate against simulated data from a high-resolution L5PC network model. ..."
References:
1 . Hay E, Hill S, Schürmann F, Markram H, Segev I (2011) Models of neocortical layer 5b pyramidal cells capturing a wide range of dendritic and perisomatic active properties. PLoS Comput Biol 7:e1002107 [PubMed]
2 . Hay E, Segev I (2015) Dendritic Excitability and Gain Control in Recurrent Cortical Microcircuits. Cereb Cortex 25:3561-71 [PubMed]
3 . Mäki-Marttunen T, Halnes G, Devor A, Metzner C, Dale AM, Andreassen OA, Einevoll GT (2018) A stepwise neuron model fitting procedure designed for recordings with high spatial resolution: Application to layer 5 pyramidal cells. J Neurosci Methods 293:264-283 [PubMed]
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):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON; NEURON (web link to model); Python; NeuroML;
Model Concept(s):
Implementer(s): Maki-Marttunen, Tuomo [tuomo.maki-marttunen at tut.fi]; Metzner, Christoph [c.metzner at herts.ac.uk];
Search NeuronDB for information about:  Neocortex L5/6 pyramidal GLU cell; 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;
/
reducedhaymodel
snmf
models
morphologies
README.html
Ca_HVA.mod *
Ca_LVAst.mod *
CaDynamics_E2.mod *
epsp.mod *
Ih.mod *
Im.mod *
K_Pst.mod *
K_Tst.mod *
Nap_Et2.mod *
NaTa_t.mod *
SK_E2.mod *
SKv3_1.mod *
drawfits_withmids_combfs.py
drawfits_withmids_combfs_nseg5.py
drawmorphs.py
drawobjective_evolution.py
emoo.py
mytools.py
originalrun.sav
pars_withmids_combfs_1a.sav
pars_withmids_combfs_1a_0a.sav
pars_withmids_combfs_1a_0a_5a.sav
pars_withmids_combfs_1a_0a_5a_5a.sav
pars_withmids_combfs_final.sav *
pars_withmids_combfs_fixed_final.sav
screenshot.png
snmf_protocols.py
snmf_target.py
snmf_withmids_combfs.py
                            
#Protocols for fitting the non-synaptic conductances in four steps.
#Defines which quantities are fitted at each step, what stimuli are for each objective function, etc.
#
#Tuomo Maki-Marttunen, 2015-2016
#

from neuron import h

#Names and ranges of each varied model parameter. Grouped into four fitting steps.
snmf_variables =   [ [ ["L_soma", 11.58, 46.34],               #First step parameters: L_soma
                       ["L_dend", 141.06, 564.26],             #L_basal   
                       ["L_apic[0]", 325.0, 1300.0],           #L_apical  
                       ["L_apic[1]", 325.26, 1301.06],         #L_apical2 
                       ["Ra_soma", 20, 500],                   #Ra_soma   
                       ["Ra_dend", 10, 1000],                   #Ra_basal  
                       ["Ra_apic[0]", 10, 1000],                #Ra_apical 
                       ["Ra_apic[1]", 10, 1000],                #Ra_apical2
                       ["cm_soma", 0.5, 2.0],                  #Cm_soma   
                       ["cm_dend", 0.5, 4.0],                  #Cm_basal  
                       ["cm_apic[0]", 0.5, 4.0],               #Cm_apical 
                       ["cm_apic[1]", 0.5, 4.0],               #Cm_apical2
                       ["g_pas_soma", 0.00002, 0.0001],       #gpas_soma
                       ["g_pas_dend", 0.000015, 0.0001],      #gpas_basal
                       ["g_pas_apic[0]", 0.000015, 0.0001],   #gpas_apical
                       ["g_pas_apic[1]", 0.000015, 0.0001] ], #gpas_apical2
                     [ ["ehcn_Ih_*", -55, -35],                #Second step parameters: E_h (Not fitted in Table 2. Used +-10 mV)
                       ["gIhbar_Ih_soma", 0, 0.0008],          #Ih_soma (Not fitted in Table 2. Used 4-fold wrt Hay value)       
                       ["gIhbar_Ih_dend", 0, 0.0008],          #Ih_basal (Not fitted in Table 2. Used 4-fold wrt Hay value)      
                       ["gIhbar_Ih_apic[0]", 0, 0.008],        #Ih_apical (Not fitted in Table 2. Used 8-fold wrt mean Hay value)
                       ["gIhbar_Ih_apic[1]", 0, 0.016],        #Ih_apical2 (Not fitted in Table 2. Used 16-fold wrt mean Hay value)
                       ["g_pas_soma", 0.00002, 0.0001],       #gpas_soma
                       ["g_pas_dend", 0.000015, 0.0001],      #gpas_basal
                       ["g_pas_apic[0]", 0.000015, 0.0001],   #gpas_apical
                       ["g_pas_apic[1]", 0.000015, 0.0001] ], #gpas_apical2
                     [ ["gCa_HVAbar_Ca_HVA_soma", 0, 0.001],           #CaHVA_soma
                       ["gCa_LVAstbar_Ca_LVAst_soma", 0, 0.01],        #CaLVA_soma
                       ["gamma_CaDynamics_E2_soma", 0.0005, 0.05],     #gamma_soma
                       ["decay_CaDynamics_E2_soma", 20.0, 1000.0],     #decay_soma
                       ["gSK_E2bar_SK_E2_soma", 0, 0.1],               #SK_soma   
                       ["gCa_HVAbar_Ca_HVA_apic[0]", 0, 0.0025],       #CaHVA_apical
                       ["gCa_LVAstbar_Ca_LVAst_apic[0]", 0, 0.1],      #CaLVA_apical
                       ["gamma_CaDynamics_E2_apic[0]", 0.0005, 0.05],  #gamma_apical
                       ["decay_CaDynamics_E2_apic[0]", 20.0, 200.0],   #decay_apical
                       ["gSK_E2bar_SK_E2_apic[0]", 0, 0.005],          #SK_apical   
                       ["gCa_HVAbar_Ca_HVA_apic[1]", 0, 10*0.0025],    #CaHVA_apical2 (Use 10-fold maximal value to take into account the possible hot region)
                       ["gCa_LVAstbar_Ca_LVAst_apic[1]", 0, 10*0.1],   #CaLVA_apical2 (Use 10-fold maximal value to take into account the possible hot region)
                       ["gamma_CaDynamics_E2_apic[1]", 0.0005, 0.05],  #gamma_apical2
                       ["decay_CaDynamics_E2_apic[1]", 20.0, 200.0],   #decay_apical2
                       ["gSK_E2bar_SK_E2_apic[1]", 0, 0.005] ],        #SK_apical2   
                     [ ["gNaTa_tbar_NaTa_t_soma", 0, 4.0],           #Nat_soma
                       ["gNap_Et2bar_Nap_Et2_soma", 0, 0.01],        #Nap_soma  
                       ["gK_Tstbar_K_Tst_soma", 0, 0.1],             #Kt_soma   
                       ["gK_Pstbar_K_Pst_soma", 0, 1.0],             #Kp_soma   
                       ["gSKv3_1bar_SKv3_1_soma", 0, 2.0],           #Kv31_soma 
                       ["gImbar_Im_apic[0]", 0, 0.0005],                #Im_apical 
                       ["gNaTa_tbar_NaTa_t_apic[0]", 0, 0.02],          #Nat_apical
                       ["gSKv3_1bar_SKv3_1_apic[0]", 0, 0.02],          #Kv31_apical
                       ["gImbar_Im_apic[1]", 0, 0.0005],                #Im_apical2   
                       ["gNaTa_tbar_NaTa_t_apic[1]", 0, 0.02],            #Nat_apical2  
                       ["gSKv3_1bar_SKv3_1_apic[1]", 0, 0.02] ] ]       #Kv31_apical2 


# Stimulus mediators (names and types of point processes):
# 0: Use the IClamp named "st1" at soma(0.5)
# 1: Use the EPSP-like stimulus named "syn1" at a segment on apical dendrite 620 um from the soma
#                   NAME    TYPE      WHERE    AT A FIXED POS?   AMPLITUDE NAME
#                                              OR AT A DISTANCE                
#                                              FROM SOMA?                      
stimulus_types = [ ["st1",  "IClamp", "soma", ["fixed", 0.5],    "amp" ],
                   ["syn1", "epsp",   "apic", ["distance", 620], "imax" ] ]

# Types of data storage (what data to pass on to the objective functions):
# 0: The membrane potential (or Ca concentration) at t=13000 ms
# 1: The maximum of membrane potential on interval 10000..10200 ms
# 2: The membrane potential time series from 50 ms prior to beginning of stimulus to 200 ms post, use a 5-ms resolution
# 3: The membrane potential time series from 50 ms prior to beginning of stimulus to 200 ms post, use a 1-ms resolution
# 4: The membrane potential time series from 50 ms prior to beginning of stimulus to 200 ms post, use a 1-ms resolution, and the exact spike times
# 5: Just the number of spikes during interval 12000...15000 ms
#                   WHAT TYPE OF OUTPUT? VOLTAGE/[CA] AT A
#                   FIXED TIME (LAST TVEC BEFORE GIVEN TIME)
#                   OR MAXIMUM/NSPIKES DURING A GIVEN INTERVAL?
data_storage_types = [ ["fixed", 13000],
                       ["max", [10000,10200] ],
                       ["trace", [9950+5*x for x in range(0,51)] ],
                       ["highrestrace", [9950+x for x in range(0,251)] ],
                       ["highrestraceandspikes", [9950+x for x in range(0,251)] ],
                       ["nspikes", [12000, 15000] ] ]


# Types of stimuli
# 0: Use IClamp ("st1") with onset at 10000 ms and 3000-ms duration 
# 1: Use IClamp ("st1") with onset at 10000 ms and 100-ms duration 
# 2: Use EPSP-like stimulus ("syn1") with onset at 10000 ms, rise time of 0.5 ms and decay time of 5.0 ms
# 3: Use IClamp ("st1") with onset at 10000 ms and 5000-ms duration 
# 4: Use IClamp ("st1") with onset at 10000 ms and 5-ms duration 
#             STIMULUS MEDIATOR
#                LIST OF POINT PROCESS PARAMETERS
stimuli = [ [ 0, [ ["del", 10000], ["dur", 3000] ] ],
            [ 0, [ ["del", 10000], ["dur", 100] ] ],
            [ 1, [ ["onset", 10000], ["tau0", 0.5], ["tau1", 5.0] ] ],
            [ 0, [ ["del", 10000], ["dur", 5000] ] ],
            [ 0, [ ["del", 10000], ["dur", 5] ] ] ]

# Types of recordings
# 0: Membrane potential at soma
# 1: Membrane potential at dendrites
# 2: Calcium concentration at apical dendrite
#                NAME      WHAT   WHERE
#                                   WHICH    AT WHICH
#                                   BRANCH   LOCATIONS
recordings = [ [ "vsoma",  "v",   [ ["soma", [0.5] ] ] ],
               [ "vdend",  "v",   [ ["apic", [0.05*x for x in range(0,21)] ], 
                                    ["dend", [0.05*x for x in range(0,21)] ] ] ],
               [ "cadend", "cai", [ ["apic", [0.05*x for x in range(0,21)] ] ] ] ]

# The setup for the objective functions. The structure consists of four steps, each with 2-4 objective functions, each of which contains
# the list of stimulus indices, the list of amplitudes, the recording index (or list of them if several), and the data storage index.
#                  STIMULUS INDEX
#                          AMPLITUDES
#                                                   RECORDING INDEX
#                                                           DATA STORAGE INDEX
snmf_setup = [ [ [ [0],   [0.5],                    1,      0 ],            #STEP 1: MEMBRANE POTENTIAL STEADY STATE RESPONSE TO A NONZERO LONG DC,
                 [ [2],   [0.5],                    1,      1 ],            #        MEMBRANE POTENTIAL MAXIMUM AS A RESPONSE TO AN EPSP,
                 [ [1],   [-1.0, 0, 1.0],           0,      2 ] ],          #        AND MEMBRANE POTENTIAL TRACE RESPONSE TO A SHORT (100 ms) DC
               [ [ [0],   [0, 0.5, 1.0],            1,      0 ],            #STEP 2: MEMBRANE POTENTIAL STEADY STATE RESPONSE TO A ZERO AND NONZERO LONG DC
                 [ [1],   [0.5, 1.0],               0,      2 ] ],          #        AND MEMBRANE POTENTIAL TRACE RESPONSE TO A SHORT (100 ms) DC
               [ [ [1],   [1.0, 2.0],               0,      3 ],            #STEP 3: MEMBRANE POTENTIAL TRACE RESPONSE TO A SHORT (100 ms) STRONG DC,
                 [ [0],   [0.5, 1.0],               [1, 2], 0 ],            #        MEMBRANE POTENTIAL STEADY STATE RESPONSE TO A LONG DC,
                                                                            #        [CA] STEADY STATE RESPONSE TO A LONG DC,
                 [ [2],   [1.0, 2.0],               [1, 2], 1 ] ],          #        MEMBRANE POTENTIAL MAXIMUM AS A RESPONSE TO AN EPSP,
                                                                            #        AND [CA] MAXIMUM AS A RESPONSE TO AN EPSP
               [ [ [1],   [0.25, 0.5],              0,      4 ],            #STEP 4: MEMBRANE POTENTIAL TRACE RESPONSE TO A 100 ms DC,
                 [ [4],   [1.9],                    0,      4 ],            #        MEMBRANE POTENTIAL TRACE RESPONSE TO A SHORT SOMATIC STIMULUS
                 [ [4,2], [[1.9, 0.5]],             0,      4 ],            #        MEMBRANE POTENTIAL TRACE RESPONSE TO COMBINATION OF SHORT SOMATIC AND APICAL STIMULI
                 [ [3],   [0.78, 1.0, 1.9],         0,      5 ] ] ]         #        NUMBERS OF SPIKES AS A RESPONSE TO A LONG DC


# Data structure telling whether we can stop the evaluation of the objective function if there are no spikes when there should be none
stop_if_no_spikes = [ [ [0], [0], [0, 0, 0] ],                 # Propose that the simulation be stopped and high error values be given to the rest of the
                      [ [0, 0, 0], [0, 0] ],                   # objectives in case there are no spikes when there should be (1's denote such stimuli, 0's
                      [ [0, 0], [0, 0], [0, 0] ],                      # denote stimuli where this is not considered)
                      [ [0, 1], [0], [1], [1, 1, 1] ] ]

# Data structure telling whether we can stop the evaluation of the objective function if there are more spikes than announced
stop_if_more_spikes_or_as_many_as = [ [ [0], [0], [0, 0, 0] ],            # Propose that the simulation be stopped and high error values be given to the rest of the
                                      [ [0, 0, 0], [0, 0] ],              # objectives in case there are more than x spikes when there should be much fewer (0's
                                      [ [0, 0], [0, 0], [0, 0] ],                 # denote stimuli where this is not considered, x > 0 denotes stimuli where this is done
                                      [ [2, 5], [5], [5], [100, 200, 300] ] ]  # when nSpikes >= x)

# Return the full matrix of the step-wise fitting variables
def get_snmf_variables():
  global snmf_variables
  return snmf_variables

# Return the parameter names that should be fixed at the istep:th step
def get_fixed_params(istep):
  global snmf_variables
  fixed_params = []
  for istep2 in range(0,istep):
    for ivar in range(0,len(snmf_variables[istep2])):
      fixed_params.append(snmf_variables[istep2][ivar][0])
  return fixed_params

# Return the parameter names that should be fitted during the istep:th step
def get_variable_params(istep):
  global snmf_variables
  variable_params = []
  if istep < len(snmf_variables):
    for ivar in range(0,len(snmf_variables[istep])):
      variable_params.append(snmf_variables[istep][ivar][0])
  return variable_params
  
# Return the stimulus array
def get_stimuli():
  global stimuli
  return stimuli

# Return the stimulus types array
def get_stimulus_types():
  global stimulus_types
  return stimulus_types

# Return the data storage array
def get_data_storage_types():
  global data_storage_types
  return data_storage_types

# Return the recordings array
def get_recordings():
  global recordings
  return recordings

# Return the stimulus-recording setup array
def get_setup():
  global snmf_setup
  return snmf_setup

def get_nspike_restrictions():
  global stop_if_no_spikes, stop_if_more_spikes_or_as_many_as
  return [stop_if_no_spikes, stop_if_more_spikes_or_as_many_as]





Loading data, please wait...