Spike Toolbox

Understanding spike trains


This topic explains the concepts behind the Spike Train abstract data structure.

Spike train definitions
Spike train instances
Spike train mappings

Spike train definitions
A spike train may exist in one or more of several forms. With the most basic calling syntax,
STCreate creates a spike train definition. This object defines how the spike train should look in terms of a frequency profile or ISI distribution. At this level the spike train contains no spike times or even a desired duration; only this high-level abstract description. See the STCreate documentation for details on calling syntax, and Generating advanced spike trains for more detailed documentation and examples.

stFalling.definition =
           strType: [1x6 char]
        fStartFreq: [1x1 double]
          fEndFreq: [1x1 double]
        fhInstFreq: [1x1 function_handle]
    fhPlotFunction: [1x1 function_handle]


Spike train instances
STInstantiate takes a spike train definition object and uses it to create a particular list of spike times. This object containing a list of spike times is called a spike train instance. It contains no addressing information associated with the spikes, and if two instances are multiplexed together (using STMultiplex) then the spikes from both trains will be interleaved in time and will be indistinguishable afterwards.

STInstantiate can use various methods to generate a list of spike times from a frequency profile. Apart from "regular" spike trains, these all involve some degree of stochasticity. No two spike trains will ever be quite the same... Spike train instances use a time quantisation (called the temporal resolution) to describe spikes; essentially, only a single spike may exist in any given time bin. This bin is around 1 μs; the toolbox default is in fact 0.99 μs to avoid temporal aliasing.

STInstantiate can create sets of correlated spike trains as well as spike trains with exponential memory; see the STInstantiate documentation.

stFalling.instance =
    fTemporalResolution: [1x1 double]
              tDuration: [1x1 double]
           bChunkedMode: [1x1 logical]
              spikeList: [104x1 double]


Spike train mappings
Spike train mappings annotate the basic list of spikes in a spike train instance with addressing information; see
Understanding toolbox addressing and the toolbox tutorial for detailed documentation and examples of how the toolbox handles addresses.

The mapping component of a spike train contains information about the addressing scheme used to map the train, in the form of an addressing specification. It may also explicitly list the specific address used to map the spike train, unless it has been multiplexed with spikes from a different address.

Since mappings contain addressing information associated with each spike, several mapped spike trains can be multiplexed together in time while maintaining their individual identity. This is required when using a spike train object to stimulate a physical device. See the STStimulate documentation or the toolbox tutorial for information about and examples for stimulating external devices.

Spike train mappings can be converted back to instances ("flattened") using STFlatten.

stFalling.mapping =
              tDuration: [1x1 double]
    fTemporalResolution: [1x1 double]
           bChunkedMode: [1x1 logical]
      stasSpecification: [1x2 struct]
             addrFields: {[1x1 double]  [1x1 double]}
            addrSynapse: [1x1 double]
              spikeList: [104x2 double]


$Id: spike_tb_spiketrainlevels.html 1481 2005-08-29 12:41:53Z dylan $