Single simulation and parameters computationΒΆ

This example shows how to simulate a sensor level MEG configuration and compute optimal parameters for neural activity and connectivity estimation

import mne
import numpy as np
import math
import os.path as op
import os
from scipy import optimize, signal
import funcs_single_sim as funcs
import pooch

subject_dir = op.join(mne.datasets.sample.data_path(), 'subjects')
subject = 'sample'

Define customizable features

# Standard deviation of the entries of the AR model (accepted values are:
# ranging from 0.1 to 1)
alpha = np.random.rand(1)*0.9+0.1
# area of the simulated patch in cm^2 (accepted values are: 2, 4, 8)
area = 8
# intra coherenc of the simulated patch (accepted values are: 1, 2, 4)
intra_coh = 1
# sensor level SNR in dB (accepted values are: ranging from -20 to 5)
SNR_sensors = -5
# background activity (computed as the norm f the patches time cources over the
# norm of the background time courses) (accepted values are: 0.1, 0.5, 0.9)
SNR_background = 2

Download data (if not already downloaded or generated with generate_fwd.py)

data_path = op.join('..', 'data')
if not op.exists(data_path):
    os.mkdir(data_path)

fname = 'cortico_dist_oct6.npy'
if not op.exists(op.join(data_path, fname)):
    url = 'https://osf.io/download/37kaz/?direct%26mode=render'

    pooch.retrieve(url=url, known_hash=None, path=data_path, fname=fname)


fname = 'oct6_fwd.fif'
if not op.exists(op.join(data_path, fname)):
    url = 'https://osf.io/download/7dfvm/?direct%26mode=render'

    pooch.retrieve(url=url, known_hash=None, path=data_path, fname=fname)
Downloading data from 'https://osf.io/download/37kaz/?direct%26mode=render' to file '/home/alberto/Documents/regconnectivity/data/cortico_dist_oct6.npy'.
SHA256 hash of downloaded file: 3be6c4a963a912903a771963ea1876a0fe4f273f92e831ae9d3a13388a8f055d
Use this value as the 'known_hash' argument of 'pooch.retrieve' to ensure that the file hasn't changed if it is downloaded again in the future.
Downloading data from 'https://osf.io/download/7dfvm/?direct%26mode=render' to file '/home/alberto/Documents/regconnectivity/data/oct6_fwd.fif'.
SHA256 hash of downloaded file: b7080e28f95f50ccbf8f76452627da1b98f58ab1c8a96d92831fd5f5efb13005
Use this value as the 'known_hash' argument of 'pooch.retrieve' to ensure that the file hasn't changed if it is downloaded again in the future.

Load data

# data path
fwd_file = op.join(data_path, 'oct6_fwd.fif')

# load data
fwd = mne.read_forward_solution(fwd_file, verbose=False)
fwd = mne.convert_forward_solution(fwd, surf_ori=True, force_fixed=True,
                                   use_cps=True, verbose=False)
fwd = mne.pick_types_forward(fwd, meg='mag', eeg=False, ref_meg=False)

# leadfield matrix
G = fwd['sol']['data']
G = 10**5*G
GGt = G.dot(G.T)
U, s, V = np.linalg.svd(G)
V = V.T

# dipols position
dip_pos = fwd['source_rr']

# dipols orientations
dip_or = fwd['source_nn']

# Source space
src = fwd['src']

# vertex indeces
vertno = [src[0]['vertno'], src[1]['vertno']]

# load cortico-cortical distance matrix
cortico_dist_file = op.join(data_path, 'cortico_dist_oct6.npy')
cortico_dist = np.load(cortico_dist_file)
102 out of 306 channels remain after picking

Define additional features

T = int(10000)  # Number of time points
fs = int(128)  # Samples frequency

# range for filtering the data
fmin = 8
fmax = 12

delta_t = 1/fs  # Time resolution
M = G.shape[0]  # Number of sensor
N_dense = G.shape[1]  # Number of sources in source space
N_act = int(2)  # Number of active patches
P = int(5)  # MVAR order
ratio_max = 1.5  # Ratio max between the intensities of the seed sources of the
                 # active patches

# store relevant features
features = {'T': T,
            'fs': fs,
            'fmin': fmin,
            'fmax': fmax,
            'N_act': N_act,
            'SNR_sensors': SNR_sensors,
            'area': area,
            'intra_coh': intra_coh,
            'SNR_backgroud': SNR_background}

Define sources location

# Select a pais of sources satisfying specific requirements
seed_loc = funcs.select_sources(G, dip_pos, 1)[0]

# Define patch radius from the desired area
r = np.sqrt(area*10**(-4)/math.pi)  # radius of the patch (maximum distance
                                    # from the seed in meters)

# Define the location of the sources within the patches
p1_locs, p2_locs = funcs.gen_patches_sources(cortico_dist, r, seed_loc)

Plot patches on the brain

Warning

Note that plot perspective might not be optimal, when downloading the codes plots are interavtive and perspectives can be changed.

view = 'axial'
X = np.zeros((G.shape[1]))
stc = mne.SourceEstimate(X, vertices=vertno, tmin=0, tstep=1, subject=subject)

hemi = 'both'
brain = stc.plot(subject=subject, surface='inflated', smoothing_steps=5,
                 hemi=hemi, subjects_dir=subject_dir, time_viewer=False,
                 colorbar=False, views=view)

nv_lh = stc.vertices[0].shape[0]
for idx, loc in enumerate([loc for loc in p1_locs]):
    if loc < nv_lh:
        brain.add_foci(stc.vertices[0][loc], coords_as_verts=True,
                       hemi='lh', color='black', scale_factor=0.3)
    else:
        brain.add_foci(stc.vertices[1][loc-nv_lh], coords_as_verts=True,
                       hemi='rh', color='black', scale_factor=0.3)

nv_lh = stc.vertices[0].shape[0]
for idx, loc in enumerate([loc for loc in p2_locs]):
    if loc < nv_lh:
        brain.add_foci(stc.vertices[0][loc], coords_as_verts=True,
                       hemi='lh', color='red', scale_factor=0.3)
    else:
        brain.add_foci(stc.vertices[1][loc-nv_lh], coords_as_verts=True,
                       hemi='rh', color='red', scale_factor=0.3)

title = 'Active patches location'
brain.add_text(0.1, 0.9, title, 'title', font_size=14)
plot single simulation
Using pyvistaqt 3d backend.

Using control points [0. 0. 0.]
/home/alberto/Documents/regconnectivity/examples_single_simulation/plot_single_simulation.py:158: RuntimeWarning: All data were zero
  colorbar=False, views=view)

Simulate brain activity

# Step 1: simulate a pair of MVAR time courses
#
# The generated time courses must satisfy two criteria:
# 1) the ratio between the norms is lower than ratio_max
#
# 2) the power spectrum in the frequency range of interest is high enough


# initialize the time courses
seed_tc = np.zeros((N_act, T))

nperseg = 256  # length of the window for the fourier transform
nfft = nperseg  # number of frequencies

power_condition = 0
while power_condition == 0:
    ratio = np.inf

    # generate MVAR time courses until they meet the condition on the norm
    while ratio > ratio_max:
        AR_mod = funcs.gen_ar_model(N_act, P, alpha)  # generate MVAR model
        X_act, AR_mod = funcs.gen_ar_series(AR_mod, T)  # generate MVAR time
                                                        # courses
        norm_X = np.linalg.norm(X_act, axis=1)  # compute norm
        ratio = norm_X[-1]/norm_X[0]  # retain pairs of time courses whose
                                      # intensities are close
                                      # (int_max/int_min < ratio_max)

    # normalize the time series so that different pairs have similar intensity
    # (this was important in the paper simulation where more than one pair of
    # time courses were simulated)
    norm_const = np.mean(np.std(X_act, axis=1))
    X_act = X_act/norm_const

    # compute power spectrum in the freq range of interest
    f, Pwe = signal.welch(X_act, fs=fs, window='hann', nperseg=nperseg,
                          noverlap=nperseg//2, nfft=nfft, detrend='constant',
                          return_onesided=True, scaling='density', axis=-1)
    P_tot = Pwe[0, :] + Pwe[1, :]
    f_in = np.intersect1d(np.where(f >= fmin)[0], np.where(f <= fmax)[0])

    # retain only time courses with sufficiently high power in the frequency
    # range of interest
    if np.sum(P_tot[f_in])/len(f_in) > 1.2*np.sum(P_tot)/len(f):
        b, a = signal.butter(3, np.array([8, 12]), btype='bandpass',
                             analog=False, output='ba', fs=fs)
        X_act = signal.filtfilt(b, a, X_act, axis=-1, padtype='odd',
                                padlen=None, method='pad', irlen=None)
        seed_tc[:, :] = X_act
        power_condition = 1


# Step 2: generate patch activity
# Generate the time courses associated with the sources within the patches, so
# that they have the desired intracoherence level.

p1_tcs, p2_tcs = funcs.gen_coherent_patches(seed_tc, p1_locs, p2_locs,
                                            intra_coh, 0, nperseg, nfft, fs,
                                            fmin, fmax)


# Step 3: generate background activtiy (it takes a while)
# To each source outside the patche is assigned a time course following an AR
# model of order 5. The overall activity of the background sources is then
# normalized to obtain the desired SNR level

# locations of background sources
bg_locs = np.setdiff1d(np.arange(N_dense), np.concatenate((p1_locs, p2_locs)))
# generate background time courses exploiting an AR model
bg_tcs_general = funcs.gen_background_tcs(P, len(bg_locs), T)


# define the norm of patches and background activity to define the snr between
# patches and bg
patches_norm = np.linalg.norm(np.concatenate((p1_tcs, p2_tcs), axis=0),
                              ord='fro')**2
bg_norm_general = np.linalg.norm(bg_tcs_general, ord='fro')**2

# scale background time coursed to obtain the desired snr level
bg_tcs = bg_tcs_general*np.sqrt((patches_norm/bg_norm_general)/SNR_background)


# Step 4: store the genarate data in a single matrix

X = np.zeros((N_dense, T))
X[bg_locs, :] = bg_tcs
X[p1_locs, :] = p1_tcs
X[p2_locs, :] = p2_tcs

Generate sensor level recordings

# generate white gaussian noise
N_tilde = np.random.randn(M, T)

# scale the noise to obtain the desired SNR
Sigma = np.sqrt(np.linalg.norm(G.dot(X), ord='fro')**2/(10**(SNR_sensors/10)
                * np.linalg.norm(N_tilde, ord='fro')**2))
N = Sigma*N_tilde

# generate sensor level recordings
Y = G.dot(X)+N

Store the generated data

data = {}
data['X'] = X
data['Y'] = Y
data['sees_loc'] = seed_loc

Compute optimal parameters

# number of parameters to be tested to find the optimal one for connectivity
# estimation
n_lambdas = 15

# initialize the dictionary where to store parameters, TPF and FPF related to
# connectivity estimation, and the variance of the noise
parameters = {'tc': [],
              'conn': np.zeros((4, n_lambdas)),
              'TPF_conn': np.zeros((n_lambdas, 4, 20)),
              'FPF_conn': np.zeros((n_lambdas, 4, 20)),
              'sigma_noise': []}

Optimal parameter for neural activity estimation

# define startin point used by the minimize function to find the optimal
# parameter
input_lamX = np.linalg.norm(N, ord='fro')**2/np.linalg.norm(G.dot(X),
                                                            ord='fro')**2

# find the optimal parameter
opt_set = optimize.minimize(funcs.err_X, input_lamX, args=(X, Y, G, GGt),
                            method='Nelder-Mead')
lamX = opt_set['x'][0].copy()

Optimal parameters for connecttivity estimation

# define the parameter to be tested to find the optimal one for connectivity
# estimation, the parameters are defined as multiples of the optimal parameter
# for neural activity estimation
lambdas = np.logspace(-5, 1, num=n_lambdas)*lamX

# define the matrix of positives and negatives (positives=1, negtives=0) for
# connectivity, if the (i,j)-th entry of the matrix assumes value 1 (0)
# indicate that there is (there is not) connection between source i and j
PN_matrix_conn = np.zeros((len(p1_locs), N_dense), dtype=int)
PN_matrix_conn[:, p2_locs] = np.ones((len(p1_locs), len(p2_locs)), dtype=int)
PN_matrix_conn = np.delete(PN_matrix_conn, p1_locs, axis=-1)

# initialize matrices of true positive and false positive fractions
TPF_conn = np.zeros((n_lambdas, 4, 20))  # dimension:
                                         # n_lambdas x conn_meths x thresholds
FPF_conn = np.zeros((n_lambdas, 4, 20))  # dimension:
                                         # n_lambdas x conn_meths x thresholds
AUC_conn = np.zeros((n_lambdas, 4))  # dimension: n_lambdas x conn_meths


# compute the AUC value for each tested parameter and for each connectivity
# matrix
for i_lam in range(n_lambdas):
    AUC_conn[i_lam, :], TPF_conn[i_lam, :, :], FPF_conn[i_lam, :, :] = \
        funcs.auc(lambdas[i_lam], ['cpsd', 'imcoh', 'ciplv', 'wpli'], G, GGt,
                  Y, p1_locs, p2_locs, fmin, fmax, PN_matrix_conn, fs, nperseg)
Connectivity computation...
    computing connectivity for 298420 connections
    using t=0.000s..1.992s for estimation (256 points)
    frequencies: 8.0Hz..12.0Hz (9 points)
    using FFT with a Hanning window to estimate spectra
    the following metrics will be computed: Imaginary Coherence, ciPLV, WPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
[Connectivity computation done]
Connectivity computation...
    computing connectivity for 298420 connections
    using t=0.000s..1.992s for estimation (256 points)
    frequencies: 8.0Hz..12.0Hz (9 points)
    using FFT with a Hanning window to estimate spectra
    the following metrics will be computed: Imaginary Coherence, ciPLV, WPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
[Connectivity computation done]
Connectivity computation...
    computing connectivity for 298420 connections
    using t=0.000s..1.992s for estimation (256 points)
    frequencies: 8.0Hz..12.0Hz (9 points)
    using FFT with a Hanning window to estimate spectra
    the following metrics will be computed: Imaginary Coherence, ciPLV, WPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
[Connectivity computation done]
Connectivity computation...
    computing connectivity for 298420 connections
    using t=0.000s..1.992s for estimation (256 points)
    frequencies: 8.0Hz..12.0Hz (9 points)
    using FFT with a Hanning window to estimate spectra
    the following metrics will be computed: Imaginary Coherence, ciPLV, WPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
[Connectivity computation done]
Connectivity computation...
    computing connectivity for 298420 connections
    using t=0.000s..1.992s for estimation (256 points)
    frequencies: 8.0Hz..12.0Hz (9 points)
    using FFT with a Hanning window to estimate spectra
    the following metrics will be computed: Imaginary Coherence, ciPLV, WPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
[Connectivity computation done]
Connectivity computation...
    computing connectivity for 298420 connections
    using t=0.000s..1.992s for estimation (256 points)
    frequencies: 8.0Hz..12.0Hz (9 points)
    using FFT with a Hanning window to estimate spectra
    the following metrics will be computed: Imaginary Coherence, ciPLV, WPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
[Connectivity computation done]
Connectivity computation...
    computing connectivity for 298420 connections
    using t=0.000s..1.992s for estimation (256 points)
    frequencies: 8.0Hz..12.0Hz (9 points)
    using FFT with a Hanning window to estimate spectra
    the following metrics will be computed: Imaginary Coherence, ciPLV, WPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
[Connectivity computation done]
Connectivity computation...
    computing connectivity for 298420 connections
    using t=0.000s..1.992s for estimation (256 points)
    frequencies: 8.0Hz..12.0Hz (9 points)
    using FFT with a Hanning window to estimate spectra
    the following metrics will be computed: Imaginary Coherence, ciPLV, WPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
[Connectivity computation done]
Connectivity computation...
    computing connectivity for 298420 connections
    using t=0.000s..1.992s for estimation (256 points)
    frequencies: 8.0Hz..12.0Hz (9 points)
    using FFT with a Hanning window to estimate spectra
    the following metrics will be computed: Imaginary Coherence, ciPLV, WPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
[Connectivity computation done]
Connectivity computation...
    computing connectivity for 298420 connections
    using t=0.000s..1.992s for estimation (256 points)
    frequencies: 8.0Hz..12.0Hz (9 points)
    using FFT with a Hanning window to estimate spectra
    the following metrics will be computed: Imaginary Coherence, ciPLV, WPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
[Connectivity computation done]
Connectivity computation...
    computing connectivity for 298420 connections
    using t=0.000s..1.992s for estimation (256 points)
    frequencies: 8.0Hz..12.0Hz (9 points)
    using FFT with a Hanning window to estimate spectra
    the following metrics will be computed: Imaginary Coherence, ciPLV, WPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
[Connectivity computation done]
Connectivity computation...
    computing connectivity for 298420 connections
    using t=0.000s..1.992s for estimation (256 points)
    frequencies: 8.0Hz..12.0Hz (9 points)
    using FFT with a Hanning window to estimate spectra
    the following metrics will be computed: Imaginary Coherence, ciPLV, WPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
[Connectivity computation done]
Connectivity computation...
    computing connectivity for 298420 connections
    using t=0.000s..1.992s for estimation (256 points)
    frequencies: 8.0Hz..12.0Hz (9 points)
    using FFT with a Hanning window to estimate spectra
    the following metrics will be computed: Imaginary Coherence, ciPLV, WPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
[Connectivity computation done]
Connectivity computation...
    computing connectivity for 298420 connections
    using t=0.000s..1.992s for estimation (256 points)
    frequencies: 8.0Hz..12.0Hz (9 points)
    using FFT with a Hanning window to estimate spectra
    the following metrics will be computed: Imaginary Coherence, ciPLV, WPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
[Connectivity computation done]
Connectivity computation...
    computing connectivity for 298420 connections
    using t=0.000s..1.992s for estimation (256 points)
    frequencies: 8.0Hz..12.0Hz (9 points)
    using FFT with a Hanning window to estimate spectra
    the following metrics will be computed: Imaginary Coherence, ciPLV, WPLI
    computing connectivity for epoch 1
    computing connectivity for epoch 2
    computing connectivity for epoch 3
    computing connectivity for epoch 4
    computing connectivity for epoch 5
    computing connectivity for epoch 6
    computing connectivity for epoch 7
    computing connectivity for epoch 8
    computing connectivity for epoch 9
    computing connectivity for epoch 10
    computing connectivity for epoch 11
    computing connectivity for epoch 12
    computing connectivity for epoch 13
    computing connectivity for epoch 14
    computing connectivity for epoch 15
    computing connectivity for epoch 16
    computing connectivity for epoch 17
    computing connectivity for epoch 18
    computing connectivity for epoch 19
    computing connectivity for epoch 20
    computing connectivity for epoch 21
    computing connectivity for epoch 22
    computing connectivity for epoch 23
    computing connectivity for epoch 24
    computing connectivity for epoch 25
    computing connectivity for epoch 26
    computing connectivity for epoch 27
    computing connectivity for epoch 28
    computing connectivity for epoch 29
    computing connectivity for epoch 30
    computing connectivity for epoch 31
    computing connectivity for epoch 32
    computing connectivity for epoch 33
    computing connectivity for epoch 34
    computing connectivity for epoch 35
    computing connectivity for epoch 36
    computing connectivity for epoch 37
    computing connectivity for epoch 38
    computing connectivity for epoch 39
    computing connectivity for epoch 40
    computing connectivity for epoch 41
    computing connectivity for epoch 42
    computing connectivity for epoch 43
    computing connectivity for epoch 44
    computing connectivity for epoch 45
    computing connectivity for epoch 46
    computing connectivity for epoch 47
    computing connectivity for epoch 48
    computing connectivity for epoch 49
    computing connectivity for epoch 50
    computing connectivity for epoch 51
    computing connectivity for epoch 52
    computing connectivity for epoch 53
    computing connectivity for epoch 54
    computing connectivity for epoch 55
    computing connectivity for epoch 56
    computing connectivity for epoch 57
    computing connectivity for epoch 58
    computing connectivity for epoch 59
    computing connectivity for epoch 60
    computing connectivity for epoch 61
    computing connectivity for epoch 62
    computing connectivity for epoch 63
    computing connectivity for epoch 64
    computing connectivity for epoch 65
    computing connectivity for epoch 66
    computing connectivity for epoch 67
    computing connectivity for epoch 68
    computing connectivity for epoch 69
    computing connectivity for epoch 70
    computing connectivity for epoch 71
    computing connectivity for epoch 72
    computing connectivity for epoch 73
    computing connectivity for epoch 74
    computing connectivity for epoch 75
    computing connectivity for epoch 76
    computing connectivity for epoch 77
[Connectivity computation done]

Store results

parameters['tc'] = lamX.copy()
parameters['conn'][0, :] = AUC_conn[:, 0].copy()
parameters['conn'][1, :] = AUC_conn[:, 1].copy()
parameters['conn'][2, :] = AUC_conn[:, 2].copy()
parameters['conn'][3, :] = AUC_conn[:, 3].copy()
parameters['TPF_conn'] = TPF_conn.copy()
parameters['FPF_conn'] = FPF_conn.copy()

Plot results Warning: note that plot perspective might not be optimal, when downloading the codes plots are interavtive and perspectives can be changed

# connectivity measures that can be plotted
conn_names = ['Cross-power spectrum', 'imCoh', 'ciPLV', 'wPLI']

# connectivity measure to plot (uncomment the one you wish to plot)
# i_conn = 0  # cpsd
i_conn = 1  # imCoh
# i_conn = 2  # ciplv
# i_conn = 3  # wpli

# regularization parameter for the selected connectivity meteric
lamC = lambdas[np.argmin(AUC_conn[:, i_conn])]*lamX

# estimated neural activity with the optimal parameters lamX and lamC
X_lamX = ((G.T).dot(np.linalg.inv(G.dot(G.T)+lamX*np.eye(M)))).dot(Y)
X_lamC = ((G.T).dot(np.linalg.inv(G.dot(G.T)+lamC*np.eye(M)))).dot(Y)

Plot simulated and estimated neural activity (norm along time of the absolute value) Warning: note that plot perspective might not be optimal, when downloading the codes plots are interavtive and perspectives can be changed

hemi = 'both'
# plot simulated neural activty
stc = mne.SourceEstimate(np.linalg.norm(X, axis=1) /
                         np.max(np.linalg.norm(X, axis=1)),
                         vertices=vertno, tmin=0, tstep=1, subject=subject)
title = 'Simulated neural activtiy'
brain = stc.plot(subject=subject, surface='inflated', smoothing_steps=5,
                 views=view, hemi=hemi, subjects_dir=subject_dir,
                 time_viewer=False, colorbar=True)
brain.add_text(0.1, 0.9, title, 'title', font_size=14)
brain.show()

# plot esimated neural activtiy (estimated using lamX)
stc = mne.SourceEstimate(np.linalg.norm(X_lamX, axis=1) /
                         np.max(np.linalg.norm(X_lamX, axis=1)),
                         vertices=vertno, tmin=0, tstep=1, subject=subject)
title = 'Estimated  neural activtiy (using lam_X)'
brain = stc.plot(subject=subject, surface='inflated', smoothing_steps=5,
                 views=view, hemi=hemi, subjects_dir=subject_dir,
                 time_viewer=False, colorbar=True)
brain.add_text(0.1, 0.9, title, 'title', font_size=14)
brain.show()

# plot esimated neural activtiy  (estimated using lamC)
stc = mne.SourceEstimate(np.linalg.norm(X_lamC, axis=1) /
                         np.max(np.linalg.norm(X_lamC, axis=1)),
                         vertices=vertno, tmin=0, tstep=1, subject=subject)
title = r'Estimated neural activtiy (using lam_{'+conn_names[i_conn]+'})'
brain = stc.plot(subject=subject, surface='inflated', smoothing_steps=5,
                 views=view, hemi=hemi, subjects_dir=subject_dir,
                 time_viewer=False, colorbar=True)
brain.add_text(0.1, 0.9, title, 'title', font_size=14)
brain.show()
  • plot single simulation
  • plot single simulation
  • plot single simulation
Using control points [0.08584372 0.12251911 0.7543848 ]
Using control points [0.56483155 0.62229469 0.93866464]
Using control points [0.64458285 0.69500395 0.96114625]

Plot simulated connectivity and estimated connectivity with both lamX and lamC (norm along frequency of seed based conncctivity) Warning: note that plot perspective might not be optimal, when downloading the codes plots are interavtive and perspectives can be changed

# Compute true and estimated connectivity

conn_true = np.zeros((len(p1_locs), N_dense))
conn_lamC = np.zeros((len(p1_locs), N_dense))
conn_lamX = np.zeros((len(p1_locs), N_dense))

for i_loc, loc in enumerate(p1_locs):
    # true connectivity
    f, Connlam_row = signal.csd(X[loc, :], X, fs=fs, window='hann',
                                nperseg=nperseg, noverlap=nperseg//2,
                                nfft=nfft, detrend='constant',
                                return_onesided=True, scaling='density',
                                axis=-1)
    f_in = np.intersect1d(np.where(f >= fmin)[0], np.where(f <= fmax)[0])
    conn_true[i_loc, :] = np.mean(abs(Connlam_row[:, f_in]), axis=-1)

    # estimated connectivity (lamC)
    f, Connlam_row = signal.csd(X_lamC[loc, :], X_lamC, fs=fs, window='hann',
                                nperseg=nperseg, noverlap=nperseg//2,
                                nfft=nfft, detrend='constant',
                                return_onesided=True, scaling='density',
                                axis=-1)
    f_in = np.intersect1d(np.where(f >= fmin)[0], np.where(f <= fmax)[0])
    conn_lamC[i_loc, :] = np.mean(abs(Connlam_row[:, f_in]), axis=-1)

    # estimated connectivity (lamX)
    f, Connlam_row = signal.csd(X_lamX[loc, :], X_lamX, fs=fs, window='hann',
                                nperseg=nperseg, noverlap=nperseg//2,
                                nfft=nfft, detrend='constant',
                                return_onesided=True, scaling='density',
                                axis=-1)
    f_in = np.intersect1d(np.where(f >= fmin)[0], np.where(f <= fmax)[0])
    conn_lamX[i_loc, :] = np.mean(abs(Connlam_row[:, f_in]), axis=-1)


conn_true = np.mean(conn_true, axis=0)
conn_lamX = np.mean(conn_lamX, axis=0)
conn_lamC = np.mean(conn_lamC, axis=0)
conn = [conn_true, conn_lamX, conn_lamC]


# plot simulate brain connectivity
stc = mne.SourceEstimate(conn_true/np.max(conn_true), vertices=vertno, tmin=0,
                         tstep=1, subject=subject)
brain = stc.plot(subject=subject, surface='inflated', smoothing_steps=5,
                 hemi=hemi, subjects_dir=subject_dir, time_viewer=False,
                 colorbar=True, views=view)
title = 'Simulated '+conn_names[i_conn]
brain.add_text(0.1, 0.9, title, 'title', font_size=14)
brain.show()

# plot estimated brain connectivity (estimated using lamX)
stc = mne.SourceEstimate(conn_lamX/np.max(conn_lamX), vertices=vertno, tmin=0,
                         tstep=1, subject=subject)
brain = stc.plot(subject=subject, surface='inflated', smoothing_steps=5,
                 hemi=hemi, subjects_dir=subject_dir, time_viewer=False,
                 colorbar=True, views=view)
title = 'Estimated ' + conn_names[i_conn] + r' (with lam_{X})'
brain.add_text(0.1, 0.9, title, 'title', font_size=14)
brain.show()

# plot estimated brain connectivity (estimated using lamc)
stc = mne.SourceEstimate(conn_lamC/np.max(conn_lamC), vertices=vertno, tmin=0,
                         tstep=1, subject=subject)
brain = stc.plot(subject=subject, surface='inflated', smoothing_steps=5,
                 hemi=hemi, subjects_dir=subject_dir, time_viewer=False,
                 colorbar=True, views=view)
title = 'Estimated ' + conn_names[i_conn] + r' (with lam_{' + \
        conn_names[i_conn] + '})'
brain.add_text(0.1, 0.9, title, 'title', font_size=14)
brain.show()
  • plot single simulation
  • plot single simulation
  • plot single simulation
Using control points [0.00162604 0.00233609 1.        ]
Using control points [0.52588823 0.58516497 0.93286758]
Using control points [0.62543007 0.68571702 0.9685291 ]

Save data in a local folder

# Uncomment the lines below if you wish to save the results


# save_path = op.join('.', 'results')
# if not op.isdir(save_path):
#    os.makedirs(save_path)

# np.save(op.join(dir_path, 'parameters.npy'), parameters)
# np.save(op.join(dir_path, 'data.npy'), data)
# np.save(op.join(dir_path, 'features.npy'), features)
# np.save(op.join(dir_path, 'connectivity.npy'), conn)

Total running time of the script: ( 66 minutes 0.137 seconds)

Gallery generated by Sphinx-Gallery