def load(subject, event_type): # Behavior fname = op.join(path_data, subject, 'behavior_%s.hdf5' % event_type) events = read_hdf5(fname) # add explicit conditions events = complete_behavior(events) # MEG fname = op.join(path_data, subject, 'epochs_%s.fif' % event_type) epochs = mne.read_epochs(fname) return epochs, events
def load(subject, event_type): # Behavior fname = op.join(path_data, subject, 'behavior_%s.hdf5' % event_type) events = read_hdf5(fname) # add explicit conditions events = complete_behavior(events) # MEG if target_baseline: fname = op.join(path_data, subject, 'epochs_tf_%s.fif' % event_type) # noqa else: fname = op.join(path_data, subject, 'epochs_tf_%s_bsl.fif' % event_type) # noqa epochs = mne.read_epochs(fname) # epochs.decimate(10) return epochs, events
plt.rcParams['font.family'] = 'sans-serif' plt.rcParams['xtick.labelsize'] = 16 plt.rcParams['ytick.labelsize'] = 16 all_correct = list() cueangle_correct = list() cuesfreq_correct = list() cueleft_correct = list() cueright_correct = list() for subject in subjects: # Read behav file (hdf5) print '**********' + subject + '************' fname = op.join(path_data, subject, 'behavior_target.hdf5') events = read_hdf5(fname) events = complete_behavior(events) # Select behav perf on all trials isfixed = np.where(events['is_eye_fixed'] == 1) iscorrect = np.array(events['is_correct']) iscorrect_fixed = iscorrect[isfixed] if len(iscorrect_fixed) != 800: warnings.warn("Total isfixed trial is not 800") print 'total is:' + str(len(iscorrect_fixed)) perc = sum(iscorrect_fixed) / len(iscorrect_fixed) all_correct.append(perc) # behav perf only cue angle cue_angle = np.where(events['cue_type'] == 'angle') if len(cue_angle[0]) != 400: warnings.warn("Total trial with cue angle is not 400") print 'total is:' + str(len(cue_angle[0]))
def make_cue_epoch_tf(subject): """Create cue epochs during WM task """ fname_raw = op.join(path_data, subject) # Read behavioral file fname_bhv = list() files = os.listdir(op.join(path_data, subject, 'behavdata')) fname_bhv.extend(([ op.join(fname_raw + '/behavdata/') + f for f in files if 'WorkMem' in f ])) for fname_behavior in fname_bhv: events_behavior = get_events_from_mat(fname_behavior) # Read raw MEG data and extract event triggers runs = list() files = os.listdir(fname_raw) runs.extend(([op.join(fname_raw + '/') + f for f in files if '.ds' in f])) events_meg = list() for run_number, this_run in enumerate(runs): fname_raw = op.join(path_data, subject, this_run) print(fname_raw) raw = read_raw_ctf(fname_raw, preload=True, system_clock='ignore') channel_trigger = np.where(np.array(raw.ch_names) == 'USPT001')[0][0] # replace 255 values with 0 trigger_baseline = np.where(raw._data[channel_trigger, :] == 255)[0] raw._data[channel_trigger, trigger_baseline] = 0. # find triggers events_meg_ = mne.find_events(raw) # Add 48ms to the trigger events (according to delay with photodiod) events_meg_ = np.array(events_meg_, float) events_meg_[:, 0] += round(.048 * raw.info['sfreq']) events_meg_ = np.array(events_meg_, int) # to keep the run from which the event was found events_meg_[:, 1] = run_number events_meg.append(events_meg_) # concatenate all meg events events_meg = np.vstack(events_meg) # add trigger index to meg_events events_target = range(1, 126) events_cue = range(126, 130) events_probe = range(130, 141) triggidx_array = [] for trigg in events_meg[:, 2]: if trigg in events_target: triggidx = 1 elif trigg in events_cue: triggidx = 2 elif trigg in events_probe: triggidx = 3 triggidx_array.append(triggidx) events_meg = np.insert(events_meg, 3, triggidx_array, axis=1) # Compare MEG and bhv triggers and save events_behavior for each event event_type = 'Cue' events_behavior_type = [] events_behavior_type = fix_triggers(events_meg, events_behavior, event_type='trigg' + event_type) epochs_list = list() # Read raw MEG, filter and epochs for run_number, this_run in enumerate(runs): fname_raw = op.join(path_data, subject, this_run) print(fname_raw) raw = read_raw_ctf(fname_raw, preload=True, system_clock='ignore') events_meg_run = make_events_run(events_behavior_type, run_number) event_id = { 'ttl_%i' % ii: ii for ii in np.unique(events_meg_run[:, 2]) } tmin = -.200 tmax = 1.500 epochs = Epochs(raw, events_meg_run, event_id=event_id, tmin=tmin, tmax=tmax, preload=True, baseline=None, decim=10) # Copy dev_head_t of the first run to others run if run_number == 0: dev_head_t = epochs.info['dev_head_t'] else: epochs.info['dev_head_t'] = dev_head_t # Apply baseline from beginning of epoch to t0 epochs.apply_baseline((-0.2, 0.)) epochs_list.append(epochs) epochs = concatenate_epochs(epochs_list) epochs.pick_types(meg=True, ref_meg=False) events = events_behavior_type events = complete_behavior(events) return epochs, events