# Model Control: Simulation Families

Modeling projects often involve executing a series of simulation runs, analyzing the output of each run, and summarizing the results. This exercise will have you examine how the location of an excitatory synapse affects the peak depolarization at the soma. In doing this, you will learn:

- how to set and determine the position of a point process under program control
- how to use the Gather Values tool for exploratory data collection
- how to use the Vector class to collect and analyze simulation output
- more about managing models with the CellBuilder

## Model

This exercise uses the ball and stick model you have already seen.

## Simulation

In the course/family directory, start NEURON with the init.hoc argument (UNIX: nrngui init.hoc , MSWin: double click on init.hoc). This particular init file

>     // start the GUI and load the ballstk cellbuilder
>     load_file("nrngui.hoc")
>     load_file("ballstk_builder.ses")

>     // load an initial starting session
>     load_file("start.ses")

makes NEURON read the session file for a CellBuilder that contains the specification of the model. You will use this CellBuilder to adjust the model parameters.

> Note: Make sure the CellBuilder's Continuous Create button is checked. Otherwise the sections of the ball and stick model will not exist.

### Using the CellBuilder to manage the spatial grid

1. Geometry/Specify Strategy : select d_lambda for the all subset. Also make sure that no section has an overriding strategy.
2. toggle Specify Strategy off
3. make sure that d_lambda = 0.1 space constant at 100 Hz

How many segments were created?
`forall print secname(), " nseg = ", nseg`
Where are the nodes located?
`dend for (x) print x, " ", x*L`

If these locations aren't particularly "esthetic," you can assign nseg a new (larger) value manually (odd multiples of 5 are nice). You could do this with a hoc statement like
`dend nseg=25`
but this would be a potential cause of confusion, so you should specify nseg through the CellBuilder instead.

> Remember, you are using the CellBuilder with Continuous Create on. This means that, if you change the model specification in the CellBuilder, or even just toggle Continuous Create off and on, what you did in hoc code could be overridden.

### Using the Representation

1. BUILD THE GUI

Set up a graphical interface that lets you apply an AlphaSynapse to the model (time constant 1.0 ms, peak conductance 0.005 umho) while observing Vm at the middle of the soma.

2. TEST THE MODEL

Put the synapse at the proximal end of the dendrite, turn on Keep Lines in the voltage graph, and run a simulation. Then reduce the peak synaptic conductance to 0 and run another. Use View = plot to get a better look at somatic Vm.

What's wrong with these responses? (hint: increase Tstop to 50 ms and run another simulation)
Change dendritic e_pas to -65 mV (use the CellBuilder's Biophysics page!) and try another run. Does this help? Why?

3. INITIAL EXPLORATION OF THE MODEL

Place the synapse at several different positions along the dendrite. Find and plot the peak amplitude of the somatic EPSP vs. synaptic location.

You will need the following:

- A procedure that moves the synapse to a specified location. I have provided putsyn.hoc, which contains a procedure (`putsyn()`) that takes a single numeric argument in the range [0, 1] (i.e. the desired synaptic location).

  `putsyn()` does these things:
  1. verifies that the requested location is actually in the range [0, 1]
  2. places the synapse in the section (uses the Point Process .loc() function)
  3. since point processes are always placed at the nearest node, and nodes are located at 0, 1, and the center of each segment, `putsyn()` must determine the actual location of the synapse (uses .get_loc()). This is assigned to a global variable called `synloc`
  4. executes the statement `run()`, which has the same effect as clicking the Init & Run button.

  Load putsyn.hoc (use the statement `xopen("putsyn.hoc")`, and then invoke putsyn() with a couple of different arguments to see what happens.

  You might also want to append the statement `xopen("putsyn.hoc")` to the end of init.hoc for future use.

- A Gather Values tool (NEURON Main Panel / Vector / Gather Values)
  Configure this to plot points whose x values are set by synloc (Variables / X variable : synloc). and whose y values come from the crosshairs y value (Variables / Crosshairs Y value).

When you are ready to use Gather Values, turn off Keep Lines in the graph of Vm vs. t. Then:
1. invoke `putsyn(0)`
2. L click on the voltage trace and move the crosshairs to the peak of the EPSP
3. L click on the Record Val button of the Gather Values tool

Repeat these 3 steps a couple of times, specifying a different location each time. After the second iteration you can use View = plot in the Gather Values graph to see how things are shaping up. Don't worry about the sequence of locations; you can always sort them in ascending order by L clicking on the "SortX" button.

4. SWITCHING TO PRODUCTION MODE

Manual data collection may be fine for initial exploration, but it's no way to pursue an extensive project that involves multiple experimental conditions (e.g. channel blockers) or complex cellular morphologies.

Here's an outline of one approach to automating the task:

> For each node along dend
>   move the synapse to that node
>   run a simulation
>   determine the most depolarized somatic Vm for that location
>   save this value and the location in a pair of vectors
> Plot the vector of peak values vs. the vector of locations

Use a text editor to create a procedure that implements this approach. Put it in a file called myprofile.hoc, and then use the command
`xopen("myprofile.hoc")`
or just use the NEURON Main Menu's "File / load hoc" button to make it available to your model.

You already have `putsyn()`, which takes care of the second and third items in this outline.
It may be helpful to know about :
for (x) objref new the Vector class in general Vector record() Vector max() Vector append() Vector plot() the Graph class

Here is a skeleton of one possible implementation of such a procedure.

5. THINGS TO TRY

1. Compute the actual EPSP amplitudes by subtracting the -65 mV baseline from the soma responses and plot the results.

2. Plot peak EPSP amplitude as a function of anatomical distance along dend in microns.

2. What would happen if the somatic HH currents were blocked? Use the CellBuilder to reduce gnabar_hh and gkbar_hh to 0. Make sure to change el_hh to -65 mV before running a new series of simulations (why or why not? and what if you don't?).

Compare these results with what you saw when HH currents were not blocked. Do spike currents in the soma enhance all EPSPs, or does the nature of the effect depend on synaptic location?

NEURON hands-on course
Copyright © 1998-2001 by N.T. Carnevale and M.L. Hines, all rights reserved.