CA1 pyramidal neuron (Ferguson et al. 2014)

 Download zip file 
Help downloading and running models
Izhikevich-based models of CA1 pyramidal cells, with parameters constrained based on a whole hippocampus preparation. Strongly and weakly adapting models based on the experimental data have been developed. Code produces example model output. The code will also be made available on OSB.
1 . Ferguson KA, Huh CY, Amilhon B, Williams S, Skinner FK (2014) Simple, biologically-constrained CA1 pyramidal cell models using an intact, whole hippocampus context. F1000Res 3:104 [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: Hippocampus;
Cell Type(s): Hippocampus CA1 pyramidal GLU cell; Abstract Izhikevich neuron;
Gap Junctions:
Simulation Environment: Brian; Python;
Model Concept(s): Simplified Models; Rebound firing;
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell;
Weakly adapting PYR model
@author: Ferguson et al. (2014) F1000Res. 
from brian import *

defaultclock.dt = 0.02*ms

#Weakly adapting PYR parameters for model 1  
C=300 * pF
vr=-61.8 * mV
vpeak=22.6 * mV
c=-65.8 * mV
klow=0.5 * nS/mV
khigh=3.3  * nS/mV
a= 0.001 /ms   #0.00008 /ms
d=5 * pA
vt=-57.0 *mV
b=3 * nS

N=1   #number of cells
mean_Iapp=100 #mean Iapplied input (pA) 
Ishift_raw=-45  #Ishift (pA)


#cell eqns
pyr_eqs = """
Iext  : amp
Ishift : amp
k=(v<vt)*klow+(v>=vt)*khigh : (siemens/volt)
du/dt = a*(b*(v-vr)-u)            : amp
dv/dt = (k*(v-vr)*(v-vt)+Ishift+Iext -u)/C : volt

#define neuron group
PYR = NeuronGroup(N, model=pyr_eqs, reset ="v = c; u += d" , threshold="v>=vpeak")

#set excitatory drive 
PYR.Iext = mean_Iapp*pA

#set Ishift 
PYR.Ishift = Ishift_raw*pA

#set initial conditions for each neuron
PYR.v = rand(len(PYR))*0.01 -0.065

#record all spike times for the neuron group
PYR_v = StateMonitor(PYR, 'v', record=True)

#run for x seconds of simulated time
duration = 1 * second  # 0.01 * second

#create arrays to record network output
times = zeros(duration/defaultclock.dt +1)
voltage = zeros(duration/defaultclock.dt +1)

net =Network(PYR,PYR_v)

####make voltage plot####
xlabel("Time (s)")
ylabel("Membrane Potential (mV)")
title('Weakly adapting PYR model 1 with %d pA input'%(mean_Iapp))
#title('Weakly adapting PYR model 2 with %d pA input'%(mean_Iapp))