This model, originally written in NEURON and hoc by Cutsuridis et al (2009), has been adapted by M. Bezaire to be a hybrid NEURON+Python model for use in a summer course on computational modeling. The original code is available on ModelDB.
This code requires NEURON. To run via Python (optional), this code requires Python 2 or 3 as well as updated environmental variables so that NEURON can be accessed from within Python. Run nrnpyenv
for hints.
Download the code as a zip file or, from the terminal with git installed, with the command:
git clone https://github.com/risecourse/CA1_Cutsuridis.git
Then, in the directory of the model code, compile the *.mod mechanisms by running the following command in a terminal:
- On Windows, run
mknrndll
- On Mac and Linux, run
nrnivmodl
The code can be run from within Spyder or via Anaconda Prompt if you want to run in parallel.
In Spyder, simply run the main.py
file. It will run slowly, in serial, and plot at the end.
If using Anaconda Prompt, first find out how many cores your computer has, then launch an Anaconda Prompt from the Anaconda application folder. Change directory (cd) to the CA1_Cutsuridis folder and then enter at the command line (replacing 4 with however many cores your computer has):
mpiexec -n 4 python main.py
After the code has finished running, it may open plots and hang (if you have plotflag=1). You can turn of plotting or kill the process if that happens. The results will still exist. To plot from within Spyder after running using Anaconda Prompt, simply open Spyder, change the working directory to the CA1_Cutsuridis folder, and then at the console enter:
import plotfcns plotfcns.plotresults(simname)
And your plots should appear. Note: this will work for simulations performed with this version of code going forward. If you need to plot old simulations, talk to me as the previous versions of the code didn't write out a parameter file used by this new plotting code.
This NEURON code implements a small network model (100 pyramidal cells and 4 types of inhibitory interneuron) of storage and recall of patterns in the CA1 region of the mammalian hippocampus. Patterns of PC activity are stored either by a predefined weight matrix generated by Hebbian learning, or by STDP at CA3 Schaffer collateral AMPA synapses.
Reference: Cutsuridis, V., Cobb, S. and Graham, B.P. Encoding and Retrieval in a model of the hippocampal CA1 microcircuit. Hippocampus, in press, DOI 10.1002/hipo.20661, 2009.
Abstract: It has been proposed that the hippocampal theta rhythm (4-7 Hz) can contribute to memory formation by separating encoding (storage) and retrieval of memories into different functional half-cycles (Hasselmo et al., 2002). We investigate, via computer simulations, the biophysical mechanisms by which storage and recall of spatio-temporal input patterns are achieved by the CA1 microcircuitry. A model of the CA1 microcircuit is presented that uses biophysical representations of the major cell types, including pyramidal (P) cells and four types of inhibitory interneurons: basket (B) cells, axo-axonic (AA) cells, bistratified (BS) cells and oriens lacunosum-molecurale (OLM) cells. Inputs to the network come from the entorhinal cortex (EC), the CA3 Schaffer collaterals and medial septum. The EC input provides the sensory information, whereas all other inputs provide context and timing information. Storage is accomplished via a local STDP mediated hetero-association of the EC input pattern and the incoming CA3 input pattern on the pyramidal cell target synapses. The model simulates the timing of firing of different hippocampal cell types relative to the theta rhythm in anaesthetized animals and proposes experimentally confirmed functional roles for the different classes of inhibitory interneurons in the storage and recall cycles (Klausberger et al., 2003, 2004). Measures of recall performance of new and previously stored input patterns in the presence or absence of various inhibitory interneurons are employed to quantitatively test the performance of our model. Finally, the mean recall quality of the CA1 microcircuit is tested as the number of stored patterns is increased.
This program is configured to produce the results presented in figures 9 and 10 of the paper, showing recall of a stored pattern when the entorhinal cortex input is disconnected from the CA1 pyramidal cells and so pattern recall is cued exclusively by CA3 Schaffer collateral input. Example results are in the Results directory. EC input can be restored by setting ECWGT to its non-zero value. Other results were produced by setting particular connection weight variables to 0 to remove certain synaptic pathways.
Note: Bug report, V. Cutsuridis and B. Graham, 21 Apr 2015: We have been informed of a bug in the IA mod file, used for the OLM interneuron first introduced in ModelDB ac. 28316. Simulations (those for Figs.9 and 10) were thus rerun with the bug fixed. There are small quantitative differences from the published results, but the model still works as described. To reproduce the published results, comment out the "rates(v)" line in the DERIVATIVE block of IA.mod.