-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcalc_power_itc_target.py
66 lines (54 loc) · 2.04 KB
/
calc_power_itc_target.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
from my_settings import (epochs_folder, tf_folder, subjects_dir, mne_folder)
import mne
import sys
import numpy as np
import pandas as pd
from mne.minimum_norm import read_inverse_operator, source_induced_power
subject = sys.argv[1]
epochs = mne.read_epochs(epochs_folder + "%s_target-epo.fif" % subject)
inv = read_inverse_operator(mne_folder + "%s-inv.fif" % subject)
labels = mne.read_labels_from_annot(
subject,
parc='PALS_B12_Lobes',
# regexp="Bro",
subjects_dir=subjects_dir)
labels_selc = labels[9], labels[10]
frequencies = np.arange(8, 13, 1) # define frequencies of interest
n_cycles = frequencies / 3. # different number of cycle per frequency
method = "dSPM"
sides = ["left", "right"]
conditions = ["ctl", "ent"]
cor = ["correct", "incorrect"]
phase = ["in_phase", "out_phase"]
congrunet = ["cong", "incong"]
columns_keys = ["subject", "side", "condition", "phase", "ROI"]
df = pd.DataFrame(columns=columns_keys)
for label in labels_selc:
for cond in conditions:
for j, side in enumerate(sides):
power, itc = source_induced_power(
epochs[cond + "/" + side],
inv,
frequencies,
label=label,
method=method,
pick_ori=None,
use_fft=True,
baseline=(-1.4, -1.1),
baseline_mode='zscore',
n_cycles=n_cycles,
pca=True,
n_jobs=1)
np.save(tf_folder + "%s_pow_%s_%s_%s_%s_target.npy" %
(subject, cond, side, method, label.name), power)
np.save(tf_folder + "%s_itc_%s_%s_%s_%s_target.npy" %
(subject, cond, side, method, label.name), itc)
n = len(epochs[cond + "/" + side])
row = pd.DataFrame([{
"subject": subject,
"side": side,
"condition": cond,
"ROI": label.name,
}])
df = df.append(row, ignore_index=True)
df.to_csv(tf_folder + "%s_tf_target_epochs.csv" % subject)