🚧 Work in progress 🚧
View how correlations between outputs of small networks vary as a function of circuit parameters
Try the demo here,
- the default network structure has A delivering input to B, and B delivering input to C (A->B->C)
- the strength of these connections is set by the weight slider
- these connections are delayed according to the delay slider
- additive noise is injected at each noise, with it's magnitude set by the sliders for each row
- peaks in cross-correlation at negative time-lags can indicate a directional dependence from node i to node j
⚠️ (causality not guaranteed)⚠️ - how do parameters such as noise levels impact the clarity of these xcorr peaks?
- look for peaks in xcorr for connections which aren't in the network
- how could these be distinguished from "true" direct connections?
- click
controls
to see how to change settings - consider hitting
c
after major parameter changes to refresh the cross-correlation,- otherwise the results will be a mix of the last N samples
- Computing "coincidence index" as a measure of connectivity
- need to verify normalization of cross-correlations
- highlight significant connections
- add axis labels for xcorr lags
- Edittable circuit structure ( see circuit-visualizer-p5https://github.com/awillats/circuit-visualizer-p5)
- better visualization of current circuit structure
- [~] Dropdown menu for noise models
- for now, cycle through with
n
- for now, cycle through with
- Edittable buffer length for cross-correlation
- Exportable quantitative results
- include autoregressive dynamics
- for now, Perlin noise setting reasonably approximates nodes with autoregression
- How Connectivity, Background Activity, and Synaptic Properties Shape the Cross-Correlation between Spike Trains Srdjan Ostojic, Nicolas Brunel and Vincent Hakim (2009)
- Connectivity inference from neural recording data: Challenges, mathematical bases and research directions Ildefons Magrans de Abril, Junichiro Yoshimoto, Kenji Doya (2018)
- Evaluation of the Performance of Information Theory-Based Methods and Cross-Correlation to Estimate the Functional Connectivity in Cortical Networks Garofalo et al. (2009)
- occasional visual glitch with cross-correlations
- might be related to switching between models/settings?
- Poisson noise model is additive, but doesn't respect non-negativity
-
finer auto-correlations mean easier connectivity inference
-
impact of variances on identifiability depends strongly on...
- which connection is being examined
- inputs and outputs to that connection
- ( stay tuned for a more general hypothesis on relationship between ground truth structure, variance, and Signal-to-noise ratio for Identifiability )
-
how you normalize matters more when signals are more different from each other
- (i.e. normalizing in reciprocal circuits)
- buffer lenghts longer than ~2k(5k) significantly slow-down script
- likely computing xcorr not rendering it
-
reciprocal circuits with STRONG-ish weights (0.6 < |w| < 1) ...>>
- circuit was A<=>B->C
- w = 0.9, 0.8, -0.7
- |w| > 1 leads to instability
- exhibit harmonics in xcorr
- multiples of base syn. delay
- also have xcorr mirrored at positive and negative lags
- harmonics in autocorr bleed over, even into non-recurrent links!
- longer delays make harmonics easier to separate
- resonance may put higher demand on proper normalization
- inhibitory weights are surprisingly similar to excitatory weights in this setting
- circuit was A<=>B->C
-
reciprocal circuits with WEAK weights (0.1 < |w| < .6) ...>>
- confirmed for w = 0.2, 0.4
- xcorr behaves much more simply, can be interpretted much like non-reciprocal case
- delay has predictable signature on xcorr
- (if autocorr is minimal, influence is delta function)
core files / UI:
sketch.js
the heart of the demoindex.html
just handles page structure and importsstyle.css
sets color scheme and text sizeui-node.js
used for interactive parameter sliders, extendsdragPoints
from dynamics-visualizer-p5
notes:
README.md
landing page / introTASKS.md
semi-organized to-do listDEVNOTES.md
unfiltered ramblings about what to do next
computational methods:
signal-generation.js
generates random signals- has Gaussian, Poisson, and Perlin noise models for now
signal-analysis.js
computes cross-correlationsnetwork-simulation.js
- extends AdjMat from circuit-visualizer-p5
key libraries:
- p5js for graphics and interactivity
- numjs for some math
- markdown-it for rendering markdown