Command: correlation_detector

Description

The correlation_detector device is a recording device. It is used to record

spikes from two pools of spike inputs and calculates the count_histogram of inter-spike

intervals (raw cross correlation) binned to bins of duration delta_tau.

The result can be obtained via GetStatus under the key /count_histogram.

In parallel it records a weighted histogram where the connection weights

are used to weight every count. In order to minimize numerical errors the Kahan summation

algorithm is used when calculating the weighted histogram.

(http://en.wikipedia.org/wiki/Kahan_summation_algorithm)

Both are arrays of 2*tau_max/delta_tau+1 values containing the histogram counts in the

following way:

Let t_{1 i} be the spike times of source 1 t_{2 j} the spike times of source 2.

histogram[n] then contains the sum of products of the weight w_{1 i}*w_{2 j}

count_histogram[n] contains 1 summed over all events with t_{2 j} - t_{1 i} in

[ n*delta_tau - tau_max - delta_tau/2 n*delta_tau - tau_max + delta_tau/2 ) .

The bins are centered around the time difference they represent but are left-closed

and right-open. This means that events with time difference -tau_max-delta_tau/2 are

counted in the leftmost bin but event with difference tau_max+delta_tau/2 are not

counted at all.

The correlation detector has two inputs which are selected via the receptor_port of the

incoming connection: All incoming connections with receptor_port = 0 will be pooled as the

spike source 1 the ones with receptor_port = 1 will be used as spike source 2.

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

tau_max double - one-sided histogram width in ms. Events with differences in

[-tau_max-delta_tau/2 tau_max+delta_tau/2) are counted.

histogram double vector read-only - raw weighted cross correlation counts

histogram_correction double_vector read-only - correction factors for kahan summation algorithm

count_histogram long vector read-only - raw cross correlation counts

n_events integer vector - number of events from source 0 and 1.

By setting n_events to [0 0] the histogram

is cleared.

Author

Moritz Helias

Jakob Jordan (implemented Kahan summation algorithm) 2013/02/18

Jakob Jordan (implemented Kahan summation algorithm) 2013/02/18

Receives

SpikeEvent

File

models/correlation_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

/cd /correlation_detector Create def

cd << /delta_tau 0.5 /tau_max 2.5 >> SetStatus

s1 cd << /receptor_type 0 >> Connect

s2 cd << /receptor_type 1 >> Connect

10 Simulate

cd [/n_events] get == --> [# 5 7 #]

cd [/histogram] get == --> [. 0 3 3 1 4 3 2 6 1 2 2 .]

cd << /reset true >> SetStatus

cd [/histogram] get == --> [. 0 0 0 0 0 0 0 0 0 0 0 .]

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

/cd /correlation_detector Create def

cd << /delta_tau 0.5 /tau_max 2.5 >> SetStatus

s1 cd << /receptor_type 0 >> Connect

s2 cd << /receptor_type 1 >> Connect

10 Simulate

cd [/n_events] get == --> [# 5 7 #]

cd [/histogram] get == --> [. 0 3 3 1 4 3 2 6 1 2 2 .]

cd << /reset true >> SetStatus

cd [/histogram] get == --> [. 0 0 0 0 0 0 0 0 0 0 0 .]

FirstVersion

2007/5/21

Availability