def plot_topo_and_psd(inst, mean_psd, freqs, channels): from matplotlib import gridspec import matplotlib.pyplot as plt from mne.viz.topomap import plot_psds_topomap fig = plt.figure(figsize=(8, 3)) gs = gridspec.GridSpec(1, 2, width_ratios=[1, 2]) ax = [plt.subplot(g) for g in gs] plot_psds_topomap(psds=mean_psd, freqs=freqs, pos=inst.info, dB=False, axes=[ax[0]], bands=[(4., 8., 'Theta')], normalize=False, cmap='inferno', show=False) # highlight channels circles = ax[0].findobj(plt.Circle) for ch in channels: circles[ch].set_color('r') circles[ch].set_radius(0.025) plot_freq = (freqs > 1.) & (freqs < 15.) ax[1].plot(freqs[plot_freq], mean_psd[channels, :][:, plot_freq].T) chan_avg = mean_psd[channels, :].mean(axis=0) ax[1].plot(freqs[plot_freq], chan_avg[plot_freq], color='k', lw=2)
def test_plot_tfr_topomap(): """Test plotting of TFR data.""" import matplotlib as mpl import matplotlib.pyplot as plt raw = read_raw_fif(raw_fname) times = np.linspace(-0.1, 0.1, 200) res = 8 n_freqs = 3 nave = 1 rng = np.random.RandomState(42) picks = [93, 94, 96, 97, 21, 22, 24, 25, 129, 130, 315, 316, 2, 5, 8, 11] info = pick_info(raw.info, picks) data = rng.randn(len(picks), n_freqs, len(times)) tfr = AverageTFR(info, data, times, np.arange(n_freqs), nave) tfr.plot_topomap(ch_type='mag', tmin=0.05, tmax=0.150, fmin=0, fmax=10, res=res, contours=0) eclick = mpl.backend_bases.MouseEvent('button_press_event', plt.gcf().canvas, 0, 0, 1) eclick.xdata = eclick.ydata = 0.1 eclick.inaxes = plt.gca() erelease = mpl.backend_bases.MouseEvent('button_release_event', plt.gcf().canvas, 0.9, 0.9, 1) erelease.xdata = 0.3 erelease.ydata = 0.2 pos = [[0.11, 0.11], [0.25, 0.5], [0.0, 0.2], [0.2, 0.39]] _onselect(eclick, erelease, tfr, pos, 'grad', 1, 3, 1, 3, 'RdBu_r', list()) _onselect(eclick, erelease, tfr, pos, 'mag', 1, 3, 1, 3, 'RdBu_r', list()) eclick.xdata = eclick.ydata = 0. erelease.xdata = erelease.ydata = 0.9 tfr._onselect(eclick, erelease, None, 'mean', None) plt.close('all') # test plot_psds_topomap info = raw.info.copy() chan_inds = channel_indices_by_type(info) info = pick_info(info, chan_inds['grad'][:4]) fig, axes = plt.subplots() freqs = np.arange(3., 9.5) bands = [(4, 8, 'Theta')] psd = np.random.rand(len(info['ch_names']), freqs.shape[0]) plot_psds_topomap(psd, freqs, info, bands=bands, axes=[axes])
def test_plot_tfr_topomap(): """Test plotting of TFR data.""" import matplotlib as mpl import matplotlib.pyplot as plt raw = read_raw_fif(raw_fname) times = np.linspace(-0.1, 0.1, 200) res = 8 n_freqs = 3 nave = 1 rng = np.random.RandomState(42) picks = [93, 94, 96, 97, 21, 22, 24, 25, 129, 130, 315, 316, 2, 5, 8, 11] info = pick_info(raw.info, picks) data = rng.randn(len(picks), n_freqs, len(times)) tfr = AverageTFR(info, data, times, np.arange(n_freqs), nave) tfr.plot_topomap(ch_type='mag', tmin=0.05, tmax=0.150, fmin=0, fmax=10, res=res, contours=0) eclick = mpl.backend_bases.MouseEvent('button_press_event', plt.gcf().canvas, 0, 0, 1) eclick.xdata = eclick.ydata = 0.1 eclick.inaxes = plt.gca() erelease = mpl.backend_bases.MouseEvent('button_release_event', plt.gcf().canvas, 0.9, 0.9, 1) erelease.xdata = 0.3 erelease.ydata = 0.2 pos = [[0.11, 0.11], [0.25, 0.5], [0.0, 0.2], [0.2, 0.39]] _onselect(eclick, erelease, tfr, pos, 'grad', 1, 3, 1, 3, 'RdBu_r', list()) _onselect(eclick, erelease, tfr, pos, 'mag', 1, 3, 1, 3, 'RdBu_r', list()) eclick.xdata = eclick.ydata = 0. erelease.xdata = erelease.ydata = 0.9 tfr._onselect(eclick, erelease, None, 'mean', None) plt.close('all') # test plot_psds_topomap info = raw.info.copy() chan_inds = channel_indices_by_type(info) info = pick_info(info, chan_inds['grad'][:4]) fig, axes = plt.subplots() freqs = np.arange(3., 9.5) bands = [(4, 8, 'Theta')] psd = np.random.rand(len(info['ch_names']), freqs.shape[0]) plot_psds_topomap(psd, freqs, info, bands=bands, axes=[axes])
def plot_topo_and_psd(inst, mean_psd, freqs, channels): from matplotlib import gridspec import matplotlib.pyplot as plt from mne.viz.topomap import plot_psds_topomap fig = plt.figure(figsize=(8, 3)) gs = gridspec.GridSpec(1, 2, width_ratios=[1, 2]) ax = [plt.subplot(g) for g in gs] plot_psds_topomap(psds=mean_psd, freqs=freqs, pos=inst.info, dB=False, axes=[ax[0]], bands=[(4., 8., 'Theta')], normalize=False, cmap='inferno', show=False); # highlight channels circles = ax[0].findobj(plt.Circle) for ch in channels: circles[ch].set_color('r') circles[ch].set_radius(0.025) plot_freq = (freqs > 1.) & (freqs < 15.) ax[1].plot(freqs[plot_freq], mean_psd[channels, :][:, plot_freq].T); chan_avg = mean_psd[channels, :].mean(axis=0) ax[1].plot(freqs[plot_freq], chan_avg[plot_freq], color='k', lw=2)
) = _prepare_topomap_plot(ep_low, ch_type, sphere=None) outlines = _make_head_outlines(sphere, pos, "head", clip_origin) if merge_channels: psds_merge, names = _merge_ch_data(psds, ch_type, names, method="mean") else: psds_merge = psds fig = plot_psds_topomap( psds_merge, freqs, dB=False, # vlim=(1, 1.5), bands=[ (2, 4, "delta (2-4)"), (4, 8, "theta (4-8)"), (8, 12, "alpha (8-12)"), (12, 30, "beta (12-30)"), ], pos=pos, outlines=outlines, sphere=sphere, show=False, ) fig.set_size_inches((20, 10)) plt.show() adjacency, ch_names = find_ch_adjacency(info, ch_type=ch_type) # set cluster threshold threshold = 6.0 # very high, but the test is quite sensitive on this data # set family-wise p-value p_accept = 0.05