Grid cell network simulations. Version 1.02.
These MATLAB (R14) scripts are cleaned up versions of the scripts used
to generate the manuscript figures. These will allow interested
readers to verify the results or to easily continue this line of
research by examining further directions. Note: Most Figure numbers
were changed during revisions--while I have tried to update the figure
references in these scripts, it is possible I have missed one or more.
Eric Zilli 2010 June 1
The scripts use print_eps to save the figures as an eps file. This is
available on MATLAB Central: It is really useful for making figures!
(v1.02 note: print_eps is now called export_fig but is just as good)
This archive includes experimental rat trajectory information in the
file rat_10925.mat. This trajectory freely available on the Moser lab
website and was collected for the Hafting et al 2005 paper by members
of the Moser lab. Cheers to them for making this information freely
available.
The general process resulting in a 2D grid cell simulation given some
model of an individual cell is:
1. Find injected current levels (variable I in the paper, I and
inputMags in the scripts) and noise level (sigma in the paper,
uniqueNoiseSTD in the scripts) that match the biological median ISI of
0.2 s period (5 Hz firing rate) and a standard deviation of 0.036
s. Because noise will cause each run to have a different mean and
std. dev. of the ISIs, it is useful to simulate, say, 5000 uncoupled
cells (allncells=5000, pcon=0) and check the statistics of the median
cell.
This can be done with scripts:
* SI_simple_model_stability_vs_params.m
* SI_acker_model_stability_vs_params.m
The output of the script is a string of numbers (parameter values and
measures of the network's activity) which are optionally written to a
file (set fileOut=1). Search for fprintf for the meaning of the values.
After running a simulation, try (some variables may not be produced by
all scripts):
% voltage variable and gating/auxilary variables
% for cell #1 during entire simulation (don't forget to transpose!):
figure; plot(state');
% voltage variable only:
figure; plot(state(1,:));
% activity of postsynaptic cell during entire simulation
figure; plot(post);
% mean ISI for each individual cell in the network
figure; plot(indivmeans);
% ISI standard deviations for each individual cell in the network
figure; plot(indivstds);
% estimated grid stability time for each individual cell in the
network
figure; plot(indivstabilities);
2. Find input-frequency relation (FI curve). This should be done to a
fairly high resolution (but low resolutions haven't been thoroughly
explored, so perhaps there is a coarser resolution that still works
fine), so the following guidelines may be useful in maximizing the use
of simulation time by simulating no more than is necessary: Use the
desired spacing of the grid cell to find the beta parameter (beta =
sqrt(3)*spacing/2). Now select a maximum instantaneous velocity to be
able to accurately path integrate (say v_max = 1 m/s). The range of
frequencies the FI curve then needs is 2*beta*v_max wide. Next select
a low frequency bound and find the input current that produces it
(I_low). This is essentially arbitrary for a Class 1 excitable cell,
but for a Class 2 excitable cell the cell itself will impose a minimum
firing rate (by definition). Find the increment (dI) to the input
current that moves it, say 1/200th (a reasonably high resolution) of
the way to the desired upper frequency (which is freq_high = freq_low
+ 2*beta*v_max corresponding to I_high). Now run FI simulations for
inputMags=I_low:dI:I_high.
This can be done with scripts:
* SI_simple_model_FI_relation.m
* SI_acker_model_FI_relation.m
We include pre-generated FI curves for the cases included in the
manuscript. These are:
Acker_sn_FI_n250.mat Synaptically-coupled network of 250
noisy biophysical cells
simple_model_RS1_FI_Jan09_n1.mat Single simple model, Type 1
excitable, regular spiking cell
simple_model_RS1n_FI_Jan09_n1.mat Noisy single simple model, Type 1
excitable, regular spiking cell
simple_model_RS2_FI_Jan09_n1.mat Single simple model, Type 2
excitable, regular spiking cell
simple_model_RS2n_FI_Jan09_n1.mat Noisy single simple model, Type 2
excitable, regular spiking cell
simple_model_RS1gn_FI_Jan09_n250.mat Gap-junction--coupled network of
250 noisy, Type 1 regular spiking
simple model cells
simple_model_RS1sn_FI_Jan09_n250.mat Synaptically-coupled network of 250
noisy, Type 1 regular spiking
simple model cells
simple_model_RS2gn_FI_Jan09_n250.mat Gap-junction--coupled network of
250 noisy, Type 2 regular spiking
simple model cells
simple_model_RS2sn_FI_Jan09_n250.mat Synaptically-coupled network of 250
noisy, Type 2 regular spiking
simple model cells
These files contain vectors "currents" and "freqs". currents(i) is the
injected current level needed to drive a network to fire at freqs(i)
Hz.
3. Use the FI curve in a 2D grid simulation to translate the velocity
signals into desired frequencies. This allows the VCOs to be
controlled, but you still need to find appropriate parameters for the
postsynaptic cell (G in the paper). I have not solved this problem. A
reasonable start is to run 4 s simulations and compare traces of VCO
cells to the activity in the postsynaptic cell (like the figures of
traces in the manuscript) and visually decide whether stronger weights
or time constants (or damping constants for a resonant postsynaptic
cell) need to change and by how much. Once apparently successful
parameters are found, try running a 10 s simulation then a 40 s
simulation then a 180 s simulation (to give approximate magnitudes),
making changes to parameters at any stage where it becomes clear you
have them wrong. This can take a while. I have one analytical and one
numerical technique that are starting points for successfully handling
this problem, but neither proved perfect in practice so are not
included.
This can be done with scripts:
* SI_simple_model_2d_grid.m
* SI_acker_model_2d_grid.m
---
The manuscript also examined firing rate adaptation. This aspect of
the problem can be explored with the scripts:
* SI_simple_model_FI_history_dependence.m
* SI_acker_model_FI_history_dependence.m
---
Parameters in some scripts depend on others:
2d_grid and FI_history_dependence scripts with single noiseless cells
depend on:
* FI_relation for the frequency-current relations needed to control
the single-cell VCOs
2d_grid and FI_history_dependence scripts with noisy cells or networks
depend on:
* stability_vs_params for values of uniqueNoiseSTD (to match biology)
and then ncells, g, and pcon to achieve high stability times despite
noise
* FI_relation for the frequency-current relations needed to control
the network VCOs
FI_relation with noisy cells or networks depends on:
* stability_vs_params for values of uniqueNoiseSTD (to match biology)
and then ncells, g, and pcon to achieve high stability times despite
noise
MANUSCRIPT ERRATA
None yet.
CHANGELOG
New in 1.02 (2011Jan10):
* Fixed plotType reference to manuscript figure numbers in comments
in SI_simple_model_2d_grid.m
* Fixed mistake in hafting_trajectory.m which was not filtering the
trajectory at the same frequency as in the manuscript.
* hafting_trajectory no longer plots the filtered and unfiltered
trajectories (uncomment those lines in hafting_trajectory.m if those
plots are desired)
* In SI_simple_model_2d_grid.m simulation type comments, replaced
variable "D" with "noise".
* In SI_simple_model_2d_grid.m simulation type 2 has much nicer
looking parameters for the resonate-and-fire model. Type 7 has nicer
looking parameters for all postsynaptic models.
New in 1.01:
* Included the trajectory from Hafting et al. 2005 which was used to
make the manuscript figures.