correlomatrix_detector

Command: correlomatrix_detector


Description
The correlomatrix_detector is a recording device. It is used to record spikes from
several pools of spike inputs and calculates the covariance matrix of inter-spike intervals
(raw auto and cross correlation) binned to bins of duration delta_tau. The histogram is only
recorded for non-negative time lags. The negative part can be obtained by the symmetry of the
covariance matrix C(t) = C^T(-t).
The result can be obtained via GetStatus under the key /count_covariance.
In parallel it records a weighted histogram where the connection weight are used to weight every
count which is available under the key /covariance.
Both are matrices of size N_channels x N_channels with each entry C_ij being a vector of
size tau_max/delta_tau + 1 containing the (weighted) histogram for non-negative time lags.

The bins are centered around the time difference they represent and are left-closed
and right-open in the lower triangular part of the matrix. On the diagonal and in the upper
triangular part the intervals are left-open and right-closed. This ensures proper counting
of events at the border of bins allowing consistent integration of a histogram over negative
and positive time lags by stacking two parts of the histogram (C(t)=[C[i][j][::-1] C[j][i][1:]]).
In this case one needs to exclude C[j][i][0] to avoid counting the zero-lag bin twice.

The correlomatrix_detector has a variable number of inputs which can be set via SetStatus under
the key N_channels. All incoming connections to a specified receptor will be pooled.

Parameters

Tstart double - Time when to start counting events. This time should be set to at least
start + tau_max in order to avoid edge effects of the correlation counts.
Tstop double - Time when to stop counting events. This time should be set to at most
Tsim - tau_max where Tsim is the duration of simulation
in order to avoid edge effects of the correlation counts.
delta_tau double - bin width in ms. This has to be an odd multiple of the resolution to
allow
the symmetry between positive and negative time-lags.
tau_max double - one-sided width in ms. In the lower triagnular part events with
differences in
[0 tau_max+delta_tau/2) are counted. On the diagonal and in
the upper triangular part events with differences in (0
tau_max+delta_tau/2]

N_channels long - The number of pools. This defines the range of receptor_type. Default is
1.
Setting N_channels clears count_covariance covariance and n_events.

covariance matrix of double vectors read-only - raw weighted auto/cross correlation
counts
count_covariance matrix of long vectors read-only - raw auto/cross correlation counts
n_events integer vector - number of events from all sources.

Author
Dmytro Grytskyy
Jakob Jordan
Receives
SpikeEvent

File
models/correlomatrix_detector.h
Remarks
This recorder does not record to file screen or memory in the usual sense.

Example:
/s1 /spike_generator Create def
/s2 /spike_generator Create def
s1 << /spike_times [ 1.0 1.5 2.7 4.0 5.1 ] >> SetStatus
s2 << /spike_times [ 0.9 1.8 2.1 2.3 3.5 3.8 4.9 ] >> SetStatus
/cm /correlomatrix_detector Create def
cm << /N_channels 2 /delta_tau 0.5 /tau_max 2.5 >> SetStatus
s1 cm << /receptor_type 0 >> Connect
s2 cm << /receptor_type 1 >> Connect
10 Simulate
cm [/n_events] get == --> [# 5 7 #]
cm [/count_covariance] get == --> [[<# 5 1 2 2 0 2 #> <# 3 4 1 3 3 0 #>] [<# 3 2 6 1 2 2 #> <# 9
3 4 6 1 2 #>]]
cm << /N_channels 2 >> SetStatus
cm [/count_covariance] get == --> [[<# 0 0 0 0 0 0 #> <# 0 0 0 0 0 0 #>] [<# 0 0 0 0 0 0 #> <# 0
0 0 0 0 0 #>]]