functional_connectivity

functional_connectivity#

class braintools.metric.functional_connectivity(activities)#

Compute functional connectivity matrix from time series data.

Calculates the pairwise Pearson correlation coefficients between all pairs of signals to create a functional connectivity matrix. This is commonly used in neuroscience to assess statistical dependencies between different brain regions or neurons.

Parameters:

activities (brainstate.typing.ArrayLike) – Time series data with shape (num_time, num_signals) where each column represents a different signal/neuron/region.

Returns:

Functional connectivity matrix with shape (num_signals, num_signals). Element (i,j) represents the correlation between signals i and j. Diagonal elements are 1.0. NaN values are replaced with 0.0.

Return type:

brainstate.typing.ArrayLike

Examples

>>> import jax.numpy as jnp
>>> import braintools as braintools
>>> # Generate correlated time series
>>> t = jnp.linspace(0, 10, 100)
>>> sig1 = jnp.sin(t) + 0.1 * jnp.random.normal(size=100)
>>> sig2 = jnp.sin(t + 0.2) + 0.1 * jnp.random.normal(size=100)
>>> activities = jnp.column_stack([sig1, sig2])
>>> fc_matrix = braintools.metric.functional_connectivity(activities)
>>> print(f"Connectivity shape: {fc_matrix.shape}")
>>> print(f"Correlation: {fc_matrix[0, 1]:.3f}")

Notes

The function uses jnp.corrcoef internally and handles NaN values by replacing them with 0.0 using jnp.nan_to_num.

For very short time series, correlations may be unreliable due to insufficient data points. Consider using longer recordings or smoothing techniques for more stable estimates.

See also

functional_connectivity_dynamics

Time-varying connectivity analysis

matrix_correlation

Correlation between connectivity matrices