4.10 From Hypotheses to Validation Targets

From Hypotheses to Validation Targets

In the previous section, we set up a hypothetical example in which the default simulation represented a neurotypical population performing the threshold-level tactile-detection task, while the experimental data represented an ASD population with sensory hypersensitivity performing the same task.

We then proposed two hypotheses for the observed differences in the dipole signals: 1. Increased amplification of sensory inputs via stronger local excitatory connections 2. Reduced inhibitory regulation of pyramidal neurons

After testing both hypotheses, we concluded that the simulation with stronger excitatory "E-E" and "E-I" connections yielded the more promising fit to the experimental data, suggesting that increased excitatory recruitment in the local network could contribute to some of the observed differences in the dipole signals.

However, it's important to emphasize that the aggregate dipole alone does not give us the full picture of what's happening in the model. We can't tell from our initial dipole plot why the fit improved, or whether the underlying activity is biologically plausible.

To develop more specific predictions about the mechanisms underlying the observed differences, we can examine the underlying cell and circuit activity in the model.

There are many ways to investigate the underlying activity, such as observing the layer-specific dipoles, spiking activity, or local field potentials. We encourage you to explore Section 7: Using the API, which contains advanced tutorials covering several API-specific features, such as recording extracellular potentials.

In the current section, we'll compare spike raster plots to explore how the simulation outputs can be used to identify targets for experimental validation. This is meant to be an illustrative example, not a comprehensive one, and is functionally similar to the more comprehensive analysis exercise we covered in Section 4.7: Multiscale Interpretation.

Before diving into the interpretation exercise, let's briefly refresh on how simulation output data are represented in HNN.

As a reminder, the simulated dipole data are stored separately from the network and are returned by the simulate_dipole() function. Other simulation data, such as the celltype-specific spiking, are stored with the network in the CellResponse attribute.

Let's examine the public attributes of CellResponse

# initialize empty list to store attributes public_attributes = [] for attribute in dir(net_default_gui.cell_response): # ignore private attributes (those that start with "_") if not attribute.startswith("_"): public_attributes.append(attribute) # print the public attribues print(public_attributes)
Out:
['ca', 'cell_types', 'isec', 'mean_rates', 'plot_spikes_hist', 'plot_spikes_raster', 'spike_gids', 'spike_times', 'spike_times_by_type', 'spike_types', 'times', 'to_dict', 'update_types', 'vsec', 'write']

Note that the CellResponse object has various attributes related to spiking data. We've already made use of the methods plot_spikes_hist and plot_spikes_raster. Should you need to access the underlying data for your own analysis, the raw spike data are available under the spike_times, spike_gids, spike_types, and spike_times_by_type data attributes.

There are also additional output data stored with the CellResponse object. For example, the isec and ca data attributes contain the (optionally-recorded) synaptic currents and calcium concentration, respectively.

In previous sections, we defined custom functions that call plot_spikes_hist() and plot_spikes_raster() with pre-specified arguments. For the analysis below, we'll reuse these functions to create a new figure that shows: 1. The input histogram (which is identical for the two simulations) 2. The spike raster for the default simulation, and 3. The spike raster for our updated simulation (testing the "local amplification" hypothesis)

Since we made a copy of net_02 after changing parameters to test the increased amplification hypothesis, we already have the CellResponse data we need to create our new figure.

# get the unsmoothed dipole for the updated simulation scaled_dipole_02_01 = net_02_dpl_01[0].scale(3000) fig, axes = plt.subplots( nrows=3, ncols=1, figsize=(10, 10), gridspec_kw={"height_ratios": [1, 3, 3]}, constrained_layout=True, ) # plot the input histogram in the top subplot custom_drive_hist( ax=axes[0], net=net_default, ) # plot the spike rasters in the bottom subplots custom_spikes_raster( ax=axes[1], net=net_default_gui, processed_dipole=unsmoothed_dipole, ) axes[1].set_title("Default Simulation") custom_spikes_raster( ax=axes[2], net=net_02_checkpoint_01, processed_dipole=scaled_dipole_02_01, ) axes[2].set_title('Local Amplification ("E-E"x2 and "E-I"x2)');
Out:
<Figure size 1000x1000 with 4 Axes>

We can see in the figure above that the two simulations have several differences in their underlying spiking activity. For the purpose of this exercise, let's identify three differences in the spiking activity in Layer 5 between the two simulations:

  1. Around the time of the first proximal drive, there appears to be greater recruitment of pyramidal neurons in the "local amplification" simulation compared to the default simulation.

  2. The timing of pyramidal neuron and interneuron spiking appears to be shifted earlier in the "local amplification" simulation.

  3. There appears to be stronger, more synchronous interneuron spiking in the "local amplification" simulation around the second proximal drive.

These observed differences highlight specific features of the circuit activity that we can investigate further. In particular, they give us predictions about which cell populations may be more strongly recruited, and how the timing of the activity may differ, between the neurotypical population (represented by the default simulation) and the ASD population (represented by the "local amplification" simulation).

We can then use these observations to identify targets for validation in follow-up experiments. For example, we could look for increased recruitment of pyramidal neurons during the early sensory response, or investigate whether the latency of the Layer 5 response differs for the ASD population. We could also examine whether inhibitory neurons show stronger or more synchronous activity during the corresponding response.

These are just a few examples of how model simulations can guide experimental validation. Rather than only comparing the aggregate dipoles between the model and the data, we can use the differences in underlying circuit activity to develop more specific predictions that can be tested with imaging, in vivo recordings, or other experimental modalities.