================================ BASICS =====================================
The general approach is to run generate_variability_sims, which will generate a
large number of NEURON hocfiles, as well as shell scripts to execute
them. Run the shell scripts and make sure data appears reasonable.
Then, use analyse_model.m to analyze.
NOTE: the following instructions are geared to unix-like operating
systems (Linux, Mac OS X). If you are running WINDOWS, you will
have to figure out a way to do adapt the following instructions (best
is to get a proper OS like Linux).
================================ STEP - BY - STEP ============================
1) install NEURON on your system & use it to compile the .mod
files. This last step is achieved by invoking from a shell the script nrnivmodl,
which is located in the NEURON install directory. This script should
be invoked from the directory where the .mod files are located.
In the following we will call this directory SIMS_ROOT.
The call to nrnivmodl will create a directory containing an executable
version of neuron called special. The name of the directory is related
to the architecture of the system. For example on a linux machine the
name will most likely be i686. On a unix-mac, umac. This name needs to put in
the variable
special_dir= '../umac'; %where the special program created by
%nrnivmodl is located
By default, it is set to umac. Note that this is RELATIVE TO THE
hocfiles_rootpath DIRECTORY.
2) make a directory where generated NEURON .hoc files will be put; in
generate_dirsel_sims, replace 'hocfiles' in the line:
hocfile_rootpath = 'hocfiles'; % where hocfiles will go and from where simulations are run
with whatever your directory is. Or just make a hocfiles subdirectory in
the directory where all the simulation code is (i.e., SIMS_ROOT).
3) make an output directory where the simulations will output ASCII files to
when run from NEURON. In generate_dirsel_sims, replace '../simout'
with your directory:
params(2).idstr = 'outfilePath';
params(2).value = '../simout';
Note that this is RELATIVE TO THE hocfiles_rootpath DIRECTORY. In the
default scheme, if hocfiles is in wherever all the hoc code is, then in that
same directory you would make a directory using
cd SIMS_ROOT/hocfiles
mkdir ../simout
This will create a subdirectory of the parent to hocfiles_rootpath (by
default SIMS_ROOT). Use full paths if you are not sure.
4) Configure generate_variability_sims as you wish ; definitely assign the number of
CPUs you have:
n_cpus = 7;
Here, 7 = (8-1) because this was done with 8 CPUs. Use 1 instead of 7 on a
1 CPU system. If you use multiple machines (with simulation files on shared network drive),
then you can use notation like
n_cpus = [7 7];
where each number is the number of processors used on each machine. Also note that
the 'special_dir' folder becomes a cell array of strings specifying the appropriate
directory for each machine.
This is only if you use the shell-generated run scripts that are created by the call
generate_sh_files(n_cpus, 1, hoc_idx, hocfile_rootpath, special_dir);
5) start MATLAB; from within the directory that generate_variability_sims.m resides,
add the support directory (with subdirectories) to the matlab path, and run generate_variability_sims.
6) Go into the hocfile_rootpath directory with a shell. Change the *.sh file
permissions to executable (e.g., 777).
cd SIMS_ROOT/hocfiles
chmod u+x *.sh
7) Execute runbatchX.sh on each machine you want, with X being the machine number:
cd SIMS_ROOT/hocfiles
./runbatchX.sh
8) In analyze_model.m, point datadir to wherever your NEURON output is:
datadir = ['simout' filesep];
The above is the default.
9) Run analyze_model.m, e.g.
analyze_model('simout/', {'singlefacet_gain_1'});
will analyze single facet simulations (if they exist and are named such).
10) To try a different parameter set
================================ FILE LIST ===================================
Simulation generation files:
generate_variability_sims.m: the main file that calls all others -- really, this
is all you should need to look at.
get_spontaneous_syanpses.m: wrapper for generate_synblock that deals with
spontaneous synaptic activity.
generate_synblock.m: generates the NEURON hoc notation-based synapses based
on synaptic timing. Note that all the stuff dealing with visual stimulation
is handled in generate_dirsel_sims ; this simply generates a very long
string of NEURON code that is then inserted into a hocfile via
generate_hocfiles.
generate_hocfiles.m: this tool uses active_template.t to generate a specific
hoc file with specific parameters
generate_sh_files.m: based on the # of cpus you expect to have, this will
generate a shell script and subordinate shell scripts that run the
individual NEURON hocfiles across processors.
parameter_comparison.rtf: This is a list of the major model parameters and how they have
changed (or haven't) between this model and that of Peron et al (2009).
'support' directory - contains a number of helper functions for generating the simulations and doing
the analysis.
NEURON support files:
LGMD_HH_Kdr_sf35.mod: K channel (Hodgkin-Huxley)
LGMD_HH_Na_sf35.mod: Na channel (Hodgkin-Huxley)
LGMD_KCa.mod: calcium-dependent potassium channel module
LGMD_CaL.mod: calcium channel module
LGMD_Ca.mod: calcium clearance module
rake_final.hoc: the morphology file simulating LGMD as a simplified "rake"
(or "trident', for the more poetically inclined)
active_template.t: template for 'active' model with conductances; used by
generate_hocfiles.m
Analysis files:
analyze_model.m: the main plotting tool that reproduces the paper's figures
6, and 7. Mild discrepancies due to synaptic jitter possible.
compareLoomingVariability.m: This file generates the bar graphs of figure 8.
compareLoomingVariability.mat is the condensed data file for this function. It has the
averaged data (.mat) from 10 sets of 50 trials (over 3 l/v values) to estimate variability when
eliminating individual sources. This many trials takes a long time to run (even over 4 machines
if you want to recreate these results - but computation speeds are always increasing).
averageModelResultStructs.m: This averages multiple .mat files produced by analyze_model.m and returns
them in a format that when saved can be used by compareLoomingVariability.m