Origin of heterogeneous spiking patterns in spinal dorsal horn neurons (Balachandar & Prescott 2018)

 Download zip file 
Help downloading and running models
"Neurons are often classified by spiking pattern. Yet, some neurons exhibit distinct patterns under subtly different test conditions, which suggests that they operate near an abrupt transition, or bifurcation. A set of such neurons may exhibit heterogeneous spiking patterns not because of qualitative differences in which ion channels they express, but rather because quantitative differences in expression levels cause neurons to operate on opposite sides of a bifurcation. Neurons in the spinal dorsal horn, for example, respond to somatic current injection with patterns that include tonic, single, gap, delayed and reluctant spiking. It is unclear whether these patterns reflect five cell populations (defined by distinct ion channel expression patterns), heterogeneity within a single population, or some combination thereof. We reproduced all five spiking patterns in a computational model by varying the densities of a low-threshold (KV1-type) potassium conductance and an inactivating (A-type) potassium conductance and found that single, gap, delayed and reluctant spiking arise when the joint probability distribution of those channel densities spans two intersecting bifurcations that divide the parameter space into quadrants, each associated with a different spiking pattern. ... "
1 . Balachandar A, Prescott SA (2018) Origin of heterogeneous spiking patterns from continuously distributed ion channel densities: a computational study in spinal dorsal horn neurons. J Physiol 596:1681-1697 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type:
Brain Region(s)/Organism:
Cell Type(s): Abstract Morris-Lecar neuron; Dorsal Root Ganglion (DRG) cell;
Channel(s): I Na,t; I K; I A; I Potassium;
Gap Junctions:
Simulation Environment: MATLAB;
Model Concept(s): Bifurcation; Activity Patterns; Parameter Fitting; Action Potential Initiation; Action Potentials; Parameter sensitivity;
Search NeuronDB for information about:  I Na,t; I A; I K; I Potassium;
%Arjun Balachandar 2016
%This program automates simulation parameters i_stim, gA & g_sub.
%Using each combination of simulation parameters, a model neuron (using
%Simulate.m) is created, which outputs the firing-response due to the input
%Note: gA refers to A-type potassium channel, while g_sub/gK_lt corresponds to the
%subthreshold non-inactivating potassium channel

clear all; clc;
model = @Simulate;

%If custom = 1, use custom resting Vm by applying a pre-stimulus current I_off, but keep net current during stim constant, equal to I_stim
%If custon = 0, run as normal (no change in resting Vm)
custom = 0;

%Stimulation parameter ranges:
time = 0.500; %length of stimulation (in sec)
i_off = 0; %level of pre-stimulus current used to change Vm

%***i_stim between max_istim and min_istim, by intervals of d_istim (see below) are used for simulation
max_istim = 50;%maximum stimulus intensity
min_istim = 50;%minimum level of stimulus intensity

%***gA/gsub between max_g and min_g, by intervals of d_g (see below) are used for simulation
max_gA = 2;
min_gA = 2;
max_gsub = 8;
min_gsub = 8;

%intervals used for varying parameters i_stim, gA and gsub
d_istim = 10;
d_gA = 0.1;
d_gsub = 0.1;

%using above ranges of parameters set by user, determine number of
%combinations of each respective parameter
num_istim = (max_istim - min_istim)/d_istim + 1;
num_gA = (max_gA - min_gA)/d_gA + 1;
num_gsub = (max_gsub - min_gsub)/d_gsub + 1;

if custom == 1 %If in i_off mode, meaning before actual stimulation a current is applied to change resting Vm
    d_ioff = 10;
    max_ioff = 20;
    min_ioff = 20;
    num_ioff = (max_ioff - min_ioff)/d_ioff + 1;
    num_istim = num_ioff;

multipleNeurons = 1; %by deafult 1: if 1, multiple model-neuron simulations; if 0, only one simulation, program displays neuron-specific plots, such as V-t plot
if custom==1
    if num_ioff <= 1 & num_gA <=1 & num_gsub <=1
        multipleNeurons = 0;
    if num_istim <= 1 & num_gA <=1 & num_gsub <=1
        multipleNeurons = 0;

%3D-Array to store all pertinent simulation-specific input & output variables, including input gA and gsub, output firing-pattern and rate:
param_array = zeros((num_istim)*(num_gA)*(num_gsub),6 + nSpikeATPs); 

for i=0:(num_istim-1)
    i_stim = min_istim + d_istim*i;
    if custom == 1
        i_stim = min_istim - d_ioff*i
        i_off = min_ioff + d_ioff*i
    display(i_stim); %Displays status of simulation to user (i.e. what percentage of simulations completed)
    for j=0:(num_gsub-1)
        g_sub = min_gsub + d_gsub*j;
        for k=0:(num_gA-1)
            gA = min_gA + d_gA*k;
            firing_pattern = model(i_stim,i_off,g_sub,gA,time,multipleNeurons); %run model for given combination of input parameters
            %Parameter array for output to file
            if custom == 1
                param_array(i*(num_gsub*num_gA) + j*num_gA + k + 1, 1) = i_off;
                param_array(i*(num_gsub*num_gA) + j*num_gA + k + 1, 1) = i_stim;
            param_array(i*(num_gsub*num_gA) + j*num_gA + k + 1, 2) = g_sub;
            param_array(i*(num_gsub*num_gA) + j*num_gA + k + 1, 3) = gA;
            param_array(i*(num_gsub*num_gA) + j*num_gA + k + 1, 4) = firing_pattern(1); %Firing-pattern (i.e. T, S, D, G, R)
            param_array(i*(num_gsub*num_gA) + j*num_gA + k + 1, 5) = firing_pattern(2); %Firing-rate

%Save variables for later analysis with 'Sim_Analysis' code
if num_gA > 1 & num_gsub > 1
    if d_gA < 0.5
        if max_gsub >= 20