Here's a schematic of the process I've used to feed images as inputs
to NEURON simulations:
1. Generate a stimulus image (sometimes by hand in GIMP or a similar
image-manipulation program, sometimes by a Perl or C++ program).
{in practice: some images I've generated by hand, and some are
generated by build.C, which is the program primarily responsible
for (2) and (3) below.}
2. Calculate an array of LGN responses (firing rates). Note that the
existing system calculates stationary (non-time-varying) responses
only. I'm working on a more general system that can handle
dynamic responses, but it's at least a few weeks from ready.
3. Use a synapse map (.snm) file to determine which values from the
LGN array will be used to make synapses on the target cell. Write
the input file: each line is for a single simulation, and contains
the array of firing rates of the "virtual" presynaptic cells.
(There's a way to use a second .snm file to set up inhibitory
inputs as well as excitatory. I strongly encourage you to try
first with just excitatory input until you have that working.)
4. (Finally some hoc code) Run the simulation; the set of dendrites
onto which the input projects is determined at this time (by the
contents of the SectionList input_list defined in geom.hoc, and
usually redefined elsewhere -- e.g., post.hoc).
Some details:
I've put (hopefully) a sufficient subset of the full system on the
Web: http://lnc.usc.edu/~karchie/synmap
You'll need to:
* build a new NEURON executable with the files in mod/
* build the C++ program "build" in src/ (you'll also need the FFT
library FFTW, http://www.fftw.org; and the NETPBM library,
available from a variety of sources) -- I haven't documented this
program at all, but try "build -h" for command options
etc. (although I don't guarantee that all of the options
necessarily work -- esp. the random image generation).
* Use "build" to generate synapse input files -- I've enclosed sample
excitatory and inhibitory .snm synapse map files, so you can either
use some of the "build" built-ins (mostly gratings) or start from
a PGM image.
* Build an input resistances file for the morphology you're using:
use the Perl script get_inres_syn.pl (note that I use "nrnexec" as
a symbolic link to the NEURON executable). The R_in file is used
to scale synaptic conductances based on position.
* Run NEURON on the files in hoc/, using your brand new synapse
input file as the activity file. The NEURON command line for
running the simulation will look something like:
special geom.hoc run-gui.hoc -
Anyway, I have hopefully put all of the pieces that you need online.
There's very little documentation, and much of it is assembled in a
rather haphazard fashion, but most of the code is somewhat extensively
commented. Let me know if you find anything missing. Good luck!
Kevin Archie
karchie@lnc.usc.edu
last update: 11 August 2000