Objective
Our overall goal in this group is to find an computationally efficient way to infer connectivity in a biological neural network from the observed spiking behavior. Recent advances in micro-electrode-technologies open the perspective of using extracellular recordings in high spacial resolution from a two-dimensional recording array. Like the DVS, some of these Sensor-Arrays encode recorded spikes following the AER protocol which makes them ideal inputs for neuromorphic systems. Current developments in the field of connectivity-estimation often utilize the complete raw signal of extracellular change of ion-concentration for finding correlated firing that indicates a causal connection between neurons. Lets try to come up with an algorithm that is capable to do the same in an event-driven fashion, using only the post-spikesorting abstraction of the physiological signal to binary spikes. This should enable us to perform an on-line learning of the probability that a certain connection is expressed in the network.
Session 1
-The targeted platform is FPGA, however, prototyping will be done on PC, in whatever language the developing sub-groups favor
-There is a need of a ground-truth connectivity matrix for performance evaluation - this task will be handed to a sub-groups
-For the first iterations, the DVS or real data from an multi-transistor array (MTA) as an input is less suitable
-First approach presented by Julien: Conditional Random Field
The idea is to compute the probability that a connection between two sources exists in a hierarchical fashion through a binary tree as the following: Every node is formed by a coincidence detector that puts out a 'spike' if two events appear in a defined time-window. The connecting edges between the nodes are weighted with the probability of the edge being used.
Here, the connection probability between elements in the lowest level (the sensors) is given by the product of the factors associated to the edges in the tree.
where a higher layer in a tree computes the probability of a lower level unit-pair being active. Again this unit is considered being active following the probability measured in the children
The following work-flow was decided on:
1) Creation of a network simulation on PC, that features few neurons, connected following a static weight matrix, putting out address events where the address corresponds to the neuron index. The network output will be used as a test signal for verification later.
2) One ore more plausible approaches for connectivity estimation will be prototyped on PC by sub-groups.
3) Transformation of the Algorithms to a System Architecture
4) Migration to FPGA (Platform to be decided). The network simulation interfaces to FPGA by USB
Session 2
Introduction to Bloom Filters by Dan Neil Split into 4 sub groups
Session 3
- Nicolai provided a python3+numpy ground-truth model to evaluate the approaches on. You can find the archive file with the script in the attachments.
The script generates files that contain lines of the format <ID>, <time delta since last spike of this neuron in ms>, <global time in ms>. Example:
2, 29, 29 14, 78, 78 9, 88, 88 4, 108, 108 3, 143, 143 2, 128, 157 13, 165, 165 18, 194, 194 10, 251, 251 18, 70, 264 18, 11, 275 6, 276, 276 17, 318, 318 7, 319, 319 11, 330, 330 17, 24, 342 8, 372, 372 15, 381, 381 12, 459, 459
The script 'spikegen' prints an exhaustive help if you call it with the -h argument:
usage: spikegen [-h] [-X X [X ...]] [-dt DT] [--jitter JITTER] N T M freq datamodel filename Generate (possibly) correlated poission spike trains positional arguments: N Number of neurons to simulate T Time in seconds to simulate M Correlation method. One of none, exact, fuzzy freq Frequency of spiking neurons. datamodel Data generation model. One of independent, attractor filename Filename for storing results. optional arguments: -h, --help show this help message and exit -X X [X ...] List of correlated neurons. You can generate multiple lists. -dt DT delta-t for time integration. usually you can ignore this setting. --jitter JITTER time delta for jitter that is applied for the fuzzy generation method in ms.
There are two different data models available: either independent poisson spike trains that may be set to be correlated, or the generation of spike trains similar to an attractor network like a head direction network. You can pass the -X argument multpiple times, which means that you can create polychronized spike trains. For instance if you want neuron 0 and 1 to be correlated (with 0 the target neuron, 1 the neuron to follow neuron 0) and neurons 2, 3, and 4 follow neuron 1, you would invoke the tools with arguments -X 0 1 -X 1 2 3 4. The other arguments are kind of self explained. As a full example, let's assume you want to generate 10 spike trains over a time course of about 60 seconds, a mean spiking frequency of each neuron of about 25.0 Hz, using the independent data model with the aforementioned correlations, you would call:
./spikegen 10 60 fuzzy 25.0 independent output.txt -X 0 1 -X 1 2 3 4
If you want to have exact spike correlations, but a temporal offset of e.g. 2 ms, you can use the --offset argument:
./spikegen 10 20 exact 10 --offset 2 independent output.txt -X 0 1 -X 1 2 3 4
Note that spikes that occur at the exact same time will be dropped!
The output will then be written to output.txt.
Please report bugs directly to Nicolai, or if you have a patch, send that.
Specs of an State-of-the-Art recording System
Sampling rate: 2 kHz (per whole frame frame rate)
Spacial resolution: 128x128 sensors, 6.6μm × 6.6 μm sensor site (approx. 10 electrodes per soma), total area: 5.4 × 6.5 mm
Typical cell Culture observed: Hippocampal Slice: 100-1000 cells, 75% show activity Retinal cells: 100-200 cells, almost all show spontaneous activity
- M. Hutzler, et al. 2006 Journal of Neurophysiology (DOI: 10.1152/jn.00347.2006 )
- A. Lambacher, et al. 2011 Applied Physics A (DOI: 10.1007/s00339-010-6046-9)
Attachments (2)
- bintree.gif (5.3 KB) - added by rgeorge 4 years ago.
- pyspikecorrelation.tar.gz (3.8 KB) - added by nicolai.waniek 4 years ago.
Download all attachments as: .zip