예제 #1
0
def calc_source_band_induced_power(epochs, inverse_operator, label, bands,
                                   n_cycles):
    # Compute a source estimate per frequency band
    return source_band_induced_power(epochs,
                                     inverse_operator,
                                     bands,
                                     label=label,
                                     n_cycles=n_cycles,
                                     use_fft=False,
                                     n_jobs=1)
# picks MEG gradiometers
picks = fiff.pick_types(raw.info, meg=True, eeg=False, eog=True,
                        stim=False, include=include, exclude='bads')

# Load condition 1
event_id = 1
events = events[:10]  # take 10 events to keep the computation time low
# Use linear detrend to reduce any edge artifacts
epochs = mne.Epochs(raw, events, event_id, tmin, tmax, picks=picks,
                    baseline=(None, 0), reject=dict(grad=4000e-13, eog=150e-6),
                    preload=True, detrend=1)

# Compute a source estimate per frequency band
bands = dict(alpha=[9, 11], beta=[18, 22])

stcs = source_band_induced_power(epochs, inverse_operator, bands, n_cycles=2,
                                 use_fft=False, n_jobs=1)

for b, stc in stcs.iteritems():
    stc.save('induced_power_%s' % b)

###############################################################################
# plot mean power
import matplotlib.pyplot as plt
plt.plot(stcs['alpha'].times, stcs['alpha'].data.mean(axis=0), label='Alpha')
plt.plot(stcs['beta'].times, stcs['beta'].data.mean(axis=0), label='Beta')
plt.xlabel('Time (ms)')
plt.ylabel('Power')
plt.legend()
plt.title('Mean source induced power')
plt.show()
                    events,
                    event_id,
                    tmin,
                    tmax,
                    picks=picks,
                    baseline=(None, 0),
                    reject=dict(grad=4000e-13, eog=150e-6),
                    preload=True,
                    detrend=1)

# Compute a source estimate per frequency band
bands = dict(alpha=[9, 11], beta=[18, 22])

stcs = source_band_induced_power(epochs,
                                 inverse_operator,
                                 bands,
                                 n_cycles=2,
                                 use_fft=False,
                                 n_jobs=1)

for b, stc in stcs.iteritems():
    stc.save('induced_power_%s' % b)

###############################################################################
# plot mean power
import matplotlib.pyplot as plt
plt.plot(stcs['alpha'].times, stcs['alpha'].data.mean(axis=0), label='Alpha')
plt.plot(stcs['beta'].times, stcs['beta'].data.mean(axis=0), label='Beta')
plt.xlabel('Time (ms)')
plt.ylabel('Power')
plt.legend()
plt.title('Mean source induced power')
            plt.colorbar()

            plt.show()


bands = dict(alpha=[8, 12])

BP_list = []

for j, label in enumerate([labels[9], labels[10], labels[9]+labels[10]]):
    for cond in epochs.event_id.keys():
        stcs = source_band_induced_power(epochs[cond],
                                         inverse_operator,
                                         bands=bands,
                                         label=label,
                                         lambda2=lambda2,
                                         method="dSPM",
                                         baseline=(None, 0),
                                         baseline_mode='zscore',
                                         pca=True)

        if len(label.name.split()) > 2:
            l_name = label.name.split()[0][5:][:-3] + "_lh_rh"
        else:
            l_name = label.name[5:][:-3] + "_" + label.name[-2:]

        BP_list.append("BP_%s_%s" % (cond, l_name))

        exec("BP_%s_%s = stcs['alpha']" % (cond, l_name))

                                        lambda2,
                                        method='sLORETA',
                                        pick_ori="normal",
                                        return_generator=True)
    stcs_slow_mt = apply_inverse_epochs(slow_epo_isi,
                                        inverse_operator,
                                        lambda2,
                                        method='sLORETA',
                                        pick_ori="normal",
                                        return_generator=True)

    # Compute a source estimate for 10-17 Hz frequency band
    stcs_slow_v1_induced = source_band_induced_power(slow_epo_isi,
                                                     inverse_operator,
                                                     dict(alpha_beta=[10, 17]),
                                                     method='sLORETA',
                                                     n_cycles=2,
                                                     n_jobs=1,
                                                     use_fft=True,
                                                     label=v1_label)

    stcs_slow_mt_induced = source_band_induced_power(fast_epo_isi,
                                                     inverse_operator,
                                                     dict(alpha_beta=[10, 17]),
                                                     method='sLORETA',
                                                     n_cycles=2,
                                                     n_jobs=1,
                                                     use_fft=True,
                                                     label=mt_label)

    # plt.plot(stcs_slow_v1_induced['alpha_beta'].vertices[1], stcs_slow_v1_induced['alpha_beta'].data.mean(1), label='slow')
    # plt.plot(stcs_fast_v1_induced['alpha_beta'].vertices[1], stcs_fast_v1_induced['alpha_beta'].data.mean(1), label='fast')
                                   subjects_dir=subjects_dir,
                                   freesurfer=True)
    mt_label_part = mt_label.split(parts=5,
                                   subject='Case' + subject,
                                   subjects_dir=subjects_dir,
                                   freesurfer=True)

    psi_slow_v1_mt_all = np.zeros([len(v1_label_part), 1])
    slow_v1_pow = []

    for label_num_v1 in np.arange(len(v1_label_part)):

        stcs_slow_v1_induced = source_band_induced_power(
            slow_epo_isi,
            inverse_operator,
            dict(alpha_beta=[8, 17]),
            method='sLORETA',
            n_cycles=2,
            label=v1_label_part[label_num_v1])
        #sort array of vertices in descending order according power
        pow_idx_v1 = stcs_slow_v1_induced['alpha_beta'].data.mean(1).argsort()
        vert_descend_v1 = stcs_slow_v1_induced['alpha_beta'].vertices[1][
            pow_idx_v1[::-1]]
        #take only 20 vertices with max power
        v1_label.vertices = vert_descend_v1[0]

        psi_slow_v1_mt = np.zeros([len(mt_label_part), 1])

        for label_num_mt in np.arange(len(mt_label_part)):

            stcs_slow_mt_induced = source_band_induced_power(
epochs.crop(None, 1.1)
epochs.resample(200)


pow_ent_left = []
pow_ent_right = []
pow_ctl_left = [] 

for i in range(len(epochs["ent_left"])):
    print "Trial %d of %d" % (i + 1, len(epochs["ent_left"]) + 1)
    tmp_pow = source_band_induced_power(epochs["ent_left"][i],
                                        inverse_operator,
                                        bands=dict(alpha=[8, 12]),
                                        label=labels_occ[1],
                                        lambda2=lambda2,
                                        method=method,
                                        n_cycles=4,
                                        baseline=(None, 0),
                                        baseline_mode="zscore",
                                        pca=True,
                                        n_jobs=n_jobs)
    pow_ent_left.append(tmp_pow["alpha"])

for i in range(len(epochs["ent_right"])):
    print "Trial %d of %d" % (i + 1, len(epochs["ent_right"]) + 1)
    tmp_pow = source_band_induced_power(epochs["ent_right"][i],
                                        inverse_operator,
                                        bands=dict(alpha=[8, 12]),
                                        label=labels_occ[1],
                                        lambda2=lambda2,
                                        method=method,