vanier piriform cortex model

36
Vanier Piriform Cortex Model Simon O’Connor University of Herfordshire OSB Hackathon 2013

Upload: ksena

Post on 24-Feb-2016

52 views

Category:

Documents


2 download

DESCRIPTION

Vanier Piriform Cortex Model. Simon O’Connor University of Herfordshire OSB Hackathon 2013. Rat Olfactory System. O’Connor et al. (2012) Olfactory Bulb Model. Vanier (2001) Piriform Cortex Model. Model Constructed in Genesis. - PowerPoint PPT Presentation

TRANSCRIPT

Vanier Piriform Cortex Model

Vanier Piriform Cortex ModelSimon OConnorUniversity of HerfordshireOSB Hackathon 2013Rat Olfactory System

OConnor et al. (2012)Olfactory Bulb Model

Vanier (2001) Piriform Cortex Model

Model Constructed in Genesis

125 interlocking GENESIS files including several different versions of theVanier Piriform Cortex model. The generic version initiated by piriform.g piriform.ginclude piriform_control.g // Top-level simulation control stuff.include piriform_free_params.g // "Free" parameters for the model.include piriform_setup.g // Set up simulation parameters.include piriform_sched.g // Simulation schedule.include piriform_params.g // Network parameters.include piriform_utils.g // Various utility functions.include piriform_reset.g // Reset functions.include piriform_check.g // Check functions.include piriform_inputs.g // Set up the inputs to the piriform cortex.include piriform_cells.g // Create the cells.include piriform_neuromod.g // Set up neuromodulation.include piriform_params_conn.g // Network parameters relating to connections.include neuron_groups.g // Define neuronal groups.include piriform_connect.g // Wire up the network.include piriform_weight_dump.g // Dump xview files of the synaptic weights.include piriform_outputs.g // Record outputs.//include piriform_test_cells.g // Calculate steady states of cells.include piriform_field.g // Set up field potential measuring system.include dumptables.g // Utilities for dumping channel table data.

piriform_cells.g includes 3 Cell types// genesis

//// piriform_cells.g: creating and positioning the cell arrays.//

include pyramidal.g // Superficial Layer 2 pyramidal cellinclude fb_inhib.g // Feedback inhibitory cellinclude ff_inhib.g// Layer 1 horizontal cell: a feed forward inhibitory interneuronOSB Cortical Modelling RequirementsThe ability to define a range of cells in terms of their morphology and biophysics Parameter Optimisation Caveat// Shift the inactivation curve to the left.

mod_scaletabchan pyr_Ka Y minf 1.0 1.0 -0.010 0.0

// Slow down the inactivation kinetics.

mod_scaletabchan pyr_Ka Y tau 1.0 10.0 0.0 0.0

// Parameter search adjustments:

mod_scaletabchan pyr_Ka X tau 1.0 1.39532 0.0 0.0mod_scaletabchan pyr_Ka Y tau 1.0 0.538194 0.0 0.0

call pyr_Ka INITREFCOUNT

piriform_cells.gint i

if (!{exists /cell_library})create neutral /cell_librarydisable /cell_libraryend

create neutral /piriform_cortex

// NOTE: The Z position of piriform cortex pyramidal cell somas is 0.0.

piriform_cells.g setting up a Pyramidal Cell array// ------------------------------------------------------------// Pyramidal cells:// ------------------------------------------------------------

echo Creating {PIRIFORM_N_PYRAMIDAL} pyramidal cells in a" " -necho {XSCALE} x {YSCALE} array.

piriform_cells.g // Ventral anterior piriform cortex:create_element_grid /cell_library/pyramidal_cell_vAPC \/piriform_cortex \{PIRIFORM_NX_PYRAMIDAL} \{PIRIFORM_NY_PYRAMIDAL} \-newname "pyramidal_cell" \-delta {PIRIFORM_DX_PYRAMIDAL} \{PIRIFORM_DY_PYRAMIDAL} \-origin {PIRIFORM_PYRAMIDAL_X_OFFSET} \{PIRIFORM_PYRAMIDAL_Y_OFFSET} \-zposition {PIRIFORM_PYRAMIDAL_Z_OFFSET} \-mask ellipse 0.0 0.0 \{PIRIFORM_X_CENTER} \{PIRIFORM_Y_CENTER} \-debug 0

piriform_cells.g // The rest of piriform cortex:create_element_grid /cell_library/pyramidal_cell \/piriform_cortex \{PIRIFORM_NX_PYRAMIDAL} \{PIRIFORM_NY_PYRAMIDAL} \-delta {PIRIFORM_DX_PYRAMIDAL} \{PIRIFORM_DY_PYRAMIDAL} \-origin {PIRIFORM_PYRAMIDAL_X_OFFSET} \{PIRIFORM_PYRAMIDAL_Y_OFFSET} \-zposition {PIRIFORM_PYRAMIDAL_Z_OFFSET} \-all \-hole ellipse 0.0 0.0 \{PIRIFORM_X_CENTER} \{PIRIFORM_Y_CENTER} \-replace \-check \-debug 0

OSB Cortical Modelling RequirementsThe ability to define a range of cells in terms of their morphology and biophysics The ability to arrange the cells in arrays The ability to scale cell arrays by number of cells to allow small test set-ups to be scaled up in size for runs on large clusters computers piriform_cells.g specify solver// Create the hsolvers for all pyramidal cells.// Use the Crank-Nicolson integration method (method 11).

for (i = 0; i < PIRIFORM_N_PYRAMIDAL; i = i + 1)new_hsolve /piriform_cortex/pyramidal_cell[{i}] 11end

navigating to another point in the script treepiriform_cells.ginclude pyramidal.g// genesis

//// pyramidal.g: a reduced 15-compartment model of a layer 2// pyramidal cell in piriform cortex.//

include pyr_chans.ginclude pyr_cell.gmake_pyramidal_cell

pyr_chans.g// genesis

//// pyr_chans.g: Define the channel library for the// layer 2 pyramidal cell simulation.//

include pyr_reversal_potentials.ginclude pyr_synchans.ginclude pyr_vdepchans.g

pyr_synchans.g// genesis

//// pyr_synchans.g//// This script contains the final versions of various synaptic// objects that form part of the pyramidal cell model.//

//// N.B. There is no compelling experimental evidence regarding what the// relative proportion of NMDA to non-NMDA receptors is. The Kapur// et. al. paper (J. Neurophys. 78(5): 2546-59, 1997) implies that// it's about 60% of the AMPA component, so that's what I'll use for// layer 1b. For layer 1a I'll use 20%, since the LTP evidence// (e.g. Kanter and Haberly, Brain Res. 525: 175-179 (1990)) suggests// that there's much less NMDA current in layer 1a. Other NMDA// parameters are also taken from Kapur et. al.//// The AMPA taus are from my own experimental work, but are similar// to what Kapur et. al. use (actually slightly slower).//

pyr_synchans.g// ----------------------------------------------------------------------//// EXCITATORY SYNAPSES ONTO PYRAMIDAL CELLS.//// ----------------------------------------------------------------------

// The synaptic tau values for layer 1a and 1b synapses were taken from my// extracellular experiments. The facilitation/depression parameters were// taken from a parameter search; that's why there are so many decimal// places of "accuracy".

//// 1) Afferent (layer 1a) synapses.//

pyr_synchans.g mod_facsynchan_wNMDAfunction make_pyr_aff_exc_synif ({exists pyr_aff_exc_syn})returnend

create mod_facsynchan_wNMDA pyr_aff_exc_syn// N.B. Gbar is set by the cellreader.setfield ^ \Gbar 0.0 \Ek {PYR_AMPA_EREV} \tau1 0.001 \tau2 0.0016 \mod_index 3 \fac_depr_on 1 \max_fac 2.0 \fac_per_spike 3.64462 \fac_tau 0.162229 \depr1_per_spike 0.786772 \depr1_tau 0.1262774 \depr2_per_spike 0.640371 \depr2_tau 0.321689 \NMDA_Ek {PYR_NMDA_EREV} \NMDA_tau1 0.060 \NMDA_tau2 0.066 \NMDA_pGbar {FP_PYR_AFF_NMDA_PGBAR} \NMDA_Mg 1.0 \ // mMNMDA_eta {FP_NMDA_ETA} \ // mM^(-1)NMDA_gamma {FP_NMDA_GAMMA} \ // V^(-1)NMDA_mod_index 3EndOSB Cortical Modelling RequirementsThe ability to define a range of cells in terms of their morphology and biophysics The ability to arrange the cells in arrays The ability to scale cell arrays by number of cells to allow small test set-ups to be scaled up in size for runs on large clusters computers The ability to handle synapse objects such as GENESIS facsynchanpyr_cell.g// genesis

//// pyr_cell.g: defines a layer 2 pyramidal cell in piriform cortex.//

if (no_pyr_Kahp)str pyramidal_cell_parameter_file = "pyramidal_no_Kahp.p"str pyramidal_cell_parameter_file2 = "pyramidal_no_Kahp.p"elsestr pyramidal_cell_parameter_file = "pyramidal.p"str pyramidal_cell_parameter_file2 = "pyramidal.p"end

pyramidal.p//// pyramidal.p: superficial layer 2 pyramidal cell in piriform cortex.//

// N.B. the high "accuracy" of some numbers is because these numbers// were derived from a parameter search.

//// The conductance values used are://// excitatory AMPA: 0.5 nS// inhibitory fast GABA-A: 1.15 nS//// Note that excitatory NMDA is implemented as a proportion of the total// AMPA conductance, so we don't need it here. This is also true for// inhibitory slow GABA-A and inhibitory slow GABA-B conductances.// For the ratios used see pyr_synchans.g.//

pyramidal.p*compt /library/pyr_compartment

*set_compt_param RA 0.5829*set_compt_param CM 0.0436*set_compt_param Em -0.0746751*set_compt_param initVm -0.0746751

*set_compt_param RM 0.451628

//*lambda_unwarnpyramidal.psoma none 0.0 0.0 21.3487 10.4300 \pyr_Na 2006.63 \pyr_Na_pers 64.8558 \pyr_Kdr 241.793 \ // 251.793pyr_Ka 440.684 \pyr_KM 57.1509 \pyr_Ca 11.1791 \pyr_Ca_conc 1.26684e+19 \pyr_Kahp 15.3955 \pyr_layer2_3_inh_syn 0.5e-9 \pyr_ext_exc_syn 0.2e-9 \pyr_spikegen 0.0piriform_params.g// ------------------------------------------------------------------------// Cortical dimensions// ------------------------------------------------------------------------

float PIRIFORM_X_EXTENT = 8.0e-3 // 8 mmfloat PIRIFORM_Y_EXTENT = 3.0e-3 // 3 mm

piriform_params.g// ------------------------------------------------------------------------// Cell numbers.// ------------------------------------------------------------------------int XSCALE, YSCALE, XSCALE2, YSCALE2, XSCALE3, YSCALE3

// For pyramidal cells.

if (scale == "large")XSCALE = 50YSCALE = 20elif (scale == "medium")XSCALE = 32YSCALE = 12elif (scale == "medium-small")XSCALE = 20YSCALE = 10else // smallXSCALE = 16YSCALE = 6end

piriform_params.g// Pyramidal cells.

int PIRIFORM_NX_PYRAMIDAL = {XSCALE}int PIRIFORM_NY_PYRAMIDAL = {YSCALE}int PIRIFORM_N_PYRAMIDAL = \PIRIFORM_NX_PYRAMIDAL * PIRIFORM_NY_PYRAMIDAL

piriform_params.g// ------------------------------------------------------------------------// Cell spacings.// ------------------------------------------------------------------------

float PIRIFORM_DX_PYRAMIDAL = {PIRIFORM_X_EXTENT / XSCALE}float PIRIFORM_DY_PYRAMIDAL = {PIRIFORM_Y_EXTENT / YSCALE}

piriform_params.g// ------------------------------------------------------------------------// Relative cell positionings.// ------------------------------------------------------------------------// Pyramidal cells.

float PIRIFORM_PYRAMIDAL_X_START = 0.0float PIRIFORM_PYRAMIDAL_X_OFFSET = PIRIFORM_DX_PYRAMIDAL / 2.0float PIRIFORM_PYRAMIDAL_X_QUARTER = \PIRIFORM_PYRAMIDAL_X_OFFSET + NXQUARTER * PIRIFORM_DX_PYRAMIDALfloat PIRIFORM_PYRAMIDAL_X_MIDDLE = \PIRIFORM_PYRAMIDAL_X_OFFSET + NXMIDDLE * PIRIFORM_DX_PYRAMIDALfloat PIRIFORM_PYRAMIDAL_X_LAST = \PIRIFORM_PYRAMIDAL_X_OFFSET + \(PIRIFORM_NX_PYRAMIDAL - 1) * PIRIFORM_DX_PYRAMIDALfloat PIRIFORM_PYRAMIDAL_X_END = \PIRIFORM_PYRAMIDAL_X_LAST + PIRIFORM_PYRAMIDAL_X_OFFSETfloat PIRIFORM_PYRAMIDAL_X_LENGTH = \PIRIFORM_PYRAMIDAL_X_END - PIRIFORM_PYRAMIDAL_X_START

piriform_params.gfloat PIRIFORM_PYRAMIDAL_Y_START = 0.0float PIRIFORM_PYRAMIDAL_Y_OFFSET = PIRIFORM_DY_PYRAMIDAL / 2.0float PIRIFORM_PYRAMIDAL_Y_MIDDLE = \PIRIFORM_PYRAMIDAL_Y_OFFSET + NYMIDDLE * PIRIFORM_DY_PYRAMIDALfloat PIRIFORM_PYRAMIDAL_Y_LAST = \PIRIFORM_PYRAMIDAL_Y_OFFSET + \(PIRIFORM_NY_PYRAMIDAL - 1) * PIRIFORM_DY_PYRAMIDALfloat PIRIFORM_PYRAMIDAL_Y_END = \PIRIFORM_PYRAMIDAL_Y_LAST + PIRIFORM_PYRAMIDAL_X_OFFSETfloat PIRIFORM_PYRAMIDAL_Y_LENGTH = \PIRIFORM_PYRAMIDAL_Y_END - PIRIFORM_PYRAMIDAL_Y_START

piriform_params.gfloat PIRIFORM_PYRAMIDAL_Z_START = -5.0e-6 // Nominal value.float PIRIFORM_PYRAMIDAL_Z_OFFSET = 0.0 // By definition.float PIRIFORM_PYRAMIDAL_Z_LAST = 0.0float PIRIFORM_PYRAMIDAL_Z_END = 5.0e-6 // Nominal value.float PIRIFORM_PYRAMIDAL_Z_LENGTH = \PIRIFORM_PYRAMIDAL_Z_END - PIRIFORM_PYRAMIDAL_Z_START

piriform_params.g// ------------------------------------------------------------------------// Other useful values.// ------------------------------------------------------------------------

float PIRIFORM_X_CENTER = PIRIFORM_X_EXTENT * 0.5float PIRIFORM_Y_CENTER = PIRIFORM_Y_EXTENT * 0.5

float PYRAMIDAL_SOMA_Z = 0.0float PYRAMIDAL_BASAL_1_Z = -79.6812e-6float PYRAMIDAL_BASAL_2_Z = -79.6812e-6 * 2.0float PYRAMIDAL_BASAL_3_Z = -79.6812e-6 * 3.0float PYRAMIDAL_BASAL_4_Z = -79.6812e-6 * 4.0float PYRAMIDAL_BASAL_5_Z = -79.6812e-6 * 5.0float PYRAMIDAL_BASAL_6_Z = -79.6812e-6 * 6.0

float PYRAMIDAL_DEEPIB_1_Z = 57.8940e-6float PYRAMIDAL_DEEPIB_2_Z = 57.8940e-6 * 2.0float PYRAMIDAL_DEEPIB_3_Z = 57.8940e-6 * 3.0float PYRAMIDAL_SUPIB_1_Z = 57.8940e-6 * 4.0float PYRAMIDAL_SUPIB_2_Z = 57.8940e-6 * 5.0float PYRAMIDAL_SUPIB_3_Z = 57.8940e-6 * 6.0float PYRAMIDAL_IA_1_Z = 57.8940e-6 * 7.0float PYRAMIDAL_IA_2_Z = 57.8940e-6 * 8.0piriform_params_conn.g// ========================================================================// Connection extents.// ========================================================================

float PYR_FB_CONNECTION_X_EXTENT = {FP_PYR_FB_CONNECTION_EXTENT}float PYR_FB_CONNECTION_Y_EXTENT = {FP_PYR_FB_CONNECTION_EXTENT}float PYR_FB_CONNECTION_Z_EXTENT = {FP_PYR_FB_CONNECTION_EXTENT}

float FB_PYR_CONNECTION_X_EXTENT = {FP_FB_PYR_CONNECTION_EXTENT}float FB_PYR_CONNECTION_Y_EXTENT = {FP_FB_PYR_CONNECTION_EXTENT}float FB_PYR_CONNECTION_Z_EXTENT = {FP_FB_PYR_CONNECTION_EXTENT}

float FF_PYR_CONNECTION_X_EXTENT = {FP_FF_PYR_CONNECTION_EXTENT}float FF_PYR_CONNECTION_Y_EXTENT = {FP_FF_PYR_CONNECTION_EXTENT}float FF_PYR_CONNECTION_Z_EXTENT = {FP_FF_PYR_CONNECTION_EXTENT}

float PYR_FF_FB_CONNECTION_X_EXTENT = {FP_PYR_FF_FB_CONNECTION_EXTENT}float PYR_FF_FB_CONNECTION_Y_EXTENT = {FP_PYR_FF_FB_CONNECTION_EXTENT}float PYR_FF_FB_CONNECTION_Z_EXTENT = {FP_PYR_FF_FB_CONNECTION_EXTENT}

float FF_FB_PYR_CONNECTION_X_EXTENT = {FP_FF_FB_PYR_CONNECTION_EXTENT}float FF_FB_PYR_CONNECTION_Y_EXTENT = {FP_FF_FB_PYR_CONNECTION_EXTENT}float FF_FB_PYR_CONNECTION_Z_EXTENT = {FP_FF_FB_PYR_CONNECTION_EXTENT}

float FF_FB_FF_FB_CONNECTION_X_EXTENT = {FP_FF_FB_FF_FB_CONNECTION_EXTENT}float FF_FB_FF_FB_CONNECTION_Y_EXTENT = {FP_FF_FB_FF_FB_CONNECTION_EXTENT}float FF_FB_FF_FB_CONNECTION_Z_EXTENT = {FP_FF_FB_FF_FB_CONNECTION_EXTENT}

float FB_FB_CONNECTION_X_EXTENT = {FP_FB_FB_CONNECTION_EXTENT}float FB_FB_CONNECTION_Y_EXTENT = {FP_FB_FB_CONNECTION_EXTENT}float FB_FB_CONNECTION_Z_EXTENT = {FP_FB_FB_CONNECTION_EXTENT}piriform_params_conn.gfloat PYR_PYR_LOCAL_CONNECTION_X_EXTENT = \{FP_PYR_PYR_LOCAL_CONNECTION_EXTENT}float PYR_PYR_LOCAL_CONNECTION_Y_EXTENT = \{FP_PYR_PYR_LOCAL_CONNECTION_EXTENT}float PYR_PYR_LOCAL_CONNECTION_Z_EXTENT = \{FP_PYR_PYR_LOCAL_CONNECTION_EXTENT}

float PYR_PYR_VAPC_CONNECTION_X_HOLE = {FP_PYR_PYR_LR_VAPC_CONNECTION_HOLE}float PYR_PYR_VAPC_CONNECTION_Y_HOLE = {FP_PYR_PYR_LR_VAPC_CONNECTION_HOLE}float PYR_PYR_VAPC_CONNECTION_HOLE = {FP_PYR_PYR_LR_VAPC_CONNECTION_HOLE}

float PYR_PYR_DAPC_CONNECTION_X_HOLE = {FP_PYR_PYR_LR_DAPC_CONNECTION_HOLE}float PYR_PYR_DAPC_CONNECTION_Y_HOLE = {FP_PYR_PYR_LR_DAPC_CONNECTION_HOLE}float PYR_PYR_DAPC_CONNECTION_HOLE = {FP_PYR_PYR_LR_DAPC_CONNECTION_HOLE}

float PYR_PYR_PPC_CONNECTION_X_HOLE = {FP_PYR_PYR_LR_PPC_CONNECTION_HOLE}float PYR_PYR_PPC_CONNECTION_Y_HOLE = {FP_PYR_PYR_LR_PPC_CONNECTION_HOLE}float PYR_PYR_PPC_CONNECTION_HOLE = {FP_PYR_PYR_LR_PPC_CONNECTION_HOLE}

// DELTA is a small nominal value used to prevent cells from// projecting to themselves. It should be at most half as large// as the smallest DX or DY parameter.

float DELTA = 1.0e-5