# Use 'MEG 2343' as seed seed_ch = 'MEG 2343' picks_ch_names = [raw.ch_names[i] for i in picks] # Create seed-target indices for connectivity computation seed = picks_ch_names.index(seed_ch) targets = np.arange(len(picks)) indices = seed_target_indices(seed, targets) # Define wavelet frequencies and number of cycles cwt_freqs = np.arange(7, 30, 2) cwt_n_cycles = cwt_freqs / 7. # Run the connectivity analysis using 2 parallel jobs sfreq = raw.info['sfreq'] # the sampling frequency con, freqs, times, _, _ = spectral_connectivity( epochs, indices=indices, method='wpli2_debiased', mode='cwt_morlet', sfreq=sfreq, cwt_freqs=cwt_freqs, cwt_n_cycles=cwt_n_cycles, n_jobs=1) # Mark the seed channel with a value of 1.0, so we can see it in the plot con[np.where(indices[1] == seed)] = 1.0 # Show topography of connectivity from seed title = 'WPLI2 - Visual - Seed %s' % seed_ch layout = mne.find_layout(epochs.info, 'meg') # use full layout tfr = AverageTFR(epochs.info, con, times, freqs, len(epochs)) tfr.plot_topo(fig_facecolor='w', font_color='k', border='k')
# Define wavelet frequencies and number of cycles cwt_freqs = np.arange(7, 30, 2) cwt_n_cycles = cwt_freqs / 7. # Run the connectivity analysis using 2 parallel jobs sfreq = raw.info['sfreq'] # the sampling frequency con, freqs, times, _, _ = spectral_connectivity(epochs, indices=indices, method='wpli2_debiased', mode='cwt_morlet', sfreq=sfreq, cwt_freqs=cwt_freqs, cwt_n_cycles=cwt_n_cycles, n_jobs=1) # Mark the seed channel with a value of 1.0, so we can see it in the plot con[np.where(indices[1] == seed)] = 1.0 # Show topography of connectivity from seed title = 'WPLI2 - Visual - Seed %s' % seed_ch layout = mne.find_layout(epochs.info, 'meg') # use full layout tfr = AverageTFR(epochs.info, con, times, freqs, len(epochs)) tfr.plot_topo(fig_facecolor='w', font_color='k', border='k') # %% # References # ---------- # .. footbibliography::
def wpli_analysis_time(subjects, log): conds = ['lon', 'sho'] roi_cons = {} roi = rois['f'] spatial_con = mne.channels.read_ch_connectivity('biosemi64') for ix_s, s in enumerate(subjects): print('subject {} of {}' .format(ix_s+1, len(subjects))) for ix_c, c in enumerate(conds): filename = op.join(study_path, 'results', 'wpli', 'over_time', '{}_{}_wpli.npz' .format(s, c)) dat = np.load(filename) info = dat['info'].item() # Create results matrices if ix_s == 0: roi_cons[c] = np.empty((len(subjects), dat['con'].shape[0], dat['con'].shape[-2], dat['con'].shape[-1])) # Get ROI connectivity # roi_ixs = [ix for ix, ch in enumerate(info['ch_names']) if ch in roi] # roi_con = np.mean(dat['con'][roi_ixs, :, :, :], axis=0) roi_ixs = 33 roi_con = dat['con'][roi_ixs, :, :, :] roi_con[roi_ixs, :, :] = 1.0 roi_cons[c][ix_s, :, :, :] = roi_con.copy() avg_con = [np.mean(roi_cons[c], axis=0) for c in conds] for ix_c, c in enumerate(conds): tfr = AverageTFR(info, avg_con[ix_c], dat['times'], dat['freqs'], len(subjects)) tfr.plot_topo(fig_facecolor='w', font_color='k', border='k', vmin=0, vmax=0.5, cmap='viridis', title=c) s = 12 for c in conds: tfr = AverageTFR(info, roi_cons[c][s, :, :, :], dat['times'], dat['freqs'], len(subjects)) tfr.plot_topo(fig_facecolor='w', font_color='k', border='k', vmin=0, vmax=1, cmap='viridis', title=c) # Stats test_con = [roi_cons[c][:, 19, :, :] for c in conds] #threshold = None threshold = dict(start=0, step=0.2) T_obs, clusters, cluster_p_values, H0 = \ permutation_cluster_test([test_con[0], test_con[1]], n_permutations=1000, threshold=threshold, tail=0) times = dat['times'] times *= 1e3 freqs = dat['freqs'] fig, ax = plt.subplots(1) T_obs_plot = np.nan * np.ones_like(T_obs) for c, p_val in zip(clusters, cluster_p_values): if p_val <= 0.05: T_obs_plot[c] = T_obs[c] ax.imshow(T_obs, extent=[times[0], times[-1], freqs[0], freqs[-1]], aspect='auto', origin='lower', cmap='gray') ax.imshow(T_obs_plot, extent=[times[0], times[-1], freqs[0], freqs[-1]], aspect='auto', origin='lower', cmap='RdBu_r') plt.xlabel('Time (ms)') plt.ylabel('Frequency (Hz)') plt.title('ROI Connectivity')