Warning

This version of the documentation is NOT an official release. You are looking at ‘latest’, which is in active and ongoing development. You can change versions on the bottom left of the screen.

# correlomatrix_detector – Device for measuring the covariance matrix from several inputs¶

## 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

:math:` 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.

Remarks:

This recorder does not record to file, screen or memory in the usual sense.

@note Correlomatrix detectors IGNORE any connection delays.

- @note Correlomatrix detector breaks with the persistence scheme as
follows: the internal buffers for storing spikes are part of State_, but are initialized by init_buffers_().

@todo The correlation detector could be made more efficient as follows (HEP 2008-07-01): - incoming_ is vector of two deques - let handle() push_back() entries in incoming_ and do nothing else - keep index to last “old spike” in each incoming_; cannot

be iterator since that may change

update() deletes all entries before now-tau_max, sorts the new entries, then registers new entries in histogram

## Parameters¶

Tstart |
real |
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 |
real |
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 |
ms |
Bin width. This has to be an odd multiple of the resolution, to allow the symmetry between positive and negative time-lags. |

tau_max |
ms |
One-sided width. 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 |
integer |
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 |
3D matrix of integers |
matrix of read-only -raw, weighted, auto/cross correlation |

count_covariance |
3D matrix of integers |
matrix of read-only -raw, auto/cross correlation counts |

n_events |
list of integers |
number of events from all sources |

## Receives¶

SpikeEvent