def main(): pd_obj = pu.proj_data() pdata = pd_obj.get_data() rois = pdata['roiLabels'] meg_subj, meg_sess = pd_obj.get_meg_metadata() # downsamp_file = '../data/downsampled_MEG_truncated.hdf5' # extract_phase_amp_downsamp(meg_sess, meg_subj, rois, downsamp_file) # data_path = '../data/MEG_downsampled_phase_amp_data.hdf5' data_path = '../data/MEG_phase_amp_data.hdf5' output_path = '../data/MEG_phase_phase_coupling.hdf5' for sess in meg_sess: for subj in meg_subj: subj_ppc = np.ndarray(shape=(len(rois), len(rois))) data_file = h5py.File(data_path, 'r') subj_data = data_file[subj + '/' + sess + '/BOLD bandpass/phase_data'][...] for r1 in range(len(rois)): for r2 in range(len(rois)): phase_1 = subj_data[:, r1] phase_2 = subj_data[:, r2] rho = circ_corr(phase_1, phase_2) subj_ppc[r1, r2] = rho ppc_file = h5py.File(output_path) prog = sess + '/' + subj if prog in ppc_file: continue out_group = ppc_file.require_group(prog) out_group.create_dataset('ppc', data=subj_ppc, compression='lzf') ppc_file.close()
def main(): pdata = pu.proj_data() rois = pdata.roiLabels meg_subj, meg_sess = pdata.get_meg_metadata() phase_amp_file = '../data/MEG_phase_amp_data.hdf5' attn_rois = ['IPS1_R', 'FEF_R', 'TPOJ1_R', 'AVI_R', '7m_R'] # ['IPS1_R', 'FEF_R', 'TPOJ1_R', 'AVI_R'] # --Phase-phase coupling-- # first_level_tests_ppc = first_level_ppc(phase_amp_file, meg_subj, meg_sess, rois, attn_rois) first_level_tests_ppc.to_excel( '../data/attention_networks/ppc_first_level.xlsx') first_level_tests_ppc = pd.read_excel( '../data/attention_networks/ppc_first_level.xlsx', index_col=0) second_level_res = second_level(first_level_tests_ppc) cron_alpha_res = cron_alpha_test(first_level_tests_ppc, attn_rois, meg_sess) res = { 'first_level_tests': first_level_tests_ppc, 'second_level_tests': second_level_res, 'cron_alpha_tests': cron_alpha_res } pu.save_xls(res, '../data/attention_networks/ppc_second_level.xlsx') plot_grouped_boxplot(first_level_tests_ppc, attn_rois, cron_alpha_df=cron_alpha_res, fname='../figures/attention_networks/ppc_boxplot.pdf') # --Phase-amplitude coupling-- # first_level_tests_pac = first_level_pac(phase_amp_file, meg_subj, meg_sess, rois, attn_rois) first_level_tests_pac.to_excel( '../data/attention_networks/pac_first_level.xlsx') first_level_tests_pac = pd.read_excel( '../data/attention_networks/pac_first_level.xlsx', index_col=0) second_level_res = second_level(first_level_tests_pac) cron_alpha_res = cron_alpha_test(first_level_tests_pac, attn_rois, meg_sess) res = { 'first_level_tests': first_level_tests_pac, 'second_level_tests': second_level_res, 'cron_alpha_tests': cron_alpha_res } pu.save_xls(res, '../data/attention_networks/pac_second_level.xlsx') plot_grouped_boxplot(first_level_tests_pac, attn_rois, cron_alpha_df=cron_alpha_res, fname='../figures/attention_networks/pac_boxplot.pdf')
def main(): pdir = pu.get_proj_dir() pdata = pu.proj_data() rois = pdata.roiLabels meg_subj, meg_sess = pdata.get_meg_metadata() phase_amp_file = pdir + '/data/MEG_phase_amp_data.hdf5' attn_rois = ['IPS1_R', 'FEF_R', 'TPOJ1_R', 'AVI_R'] first_level_tests = first_level(phase_amp_file, meg_subj, meg_sess, rois, attn_rois) first_level_tests.to_excel( pdir + '/figures/attention_networks/phase_amp_first_level.xlsx')
import sys sys.path.append("..") import os import h5py import datetime import numpy as np import pandas as pd import proj_utils as pu import matplotlib.pyplot as plt from scipy.signal import coherence from nipype.algorithms import icc #Load data pdObj = pu.proj_data() pdir = pu._get_proj_dir() pData = pdObj.get_data() rois = pData['roiLabels'] database = pData['database'] #Getting fmri info fmri_subj_path = pdir + '/data/timeseries_rs-fMRI' files = os.listdir(fmri_subj_path) fmri_subj = sorted(list(set([f.split('_')[0] for f in files]))) fmri_sess = list(set([f.split('_')[2].replace('.mat', '') for f in files])) badSubjects = ['104012', '125525', '151526', '182840', '200109', '500222'] for subject in badSubjects:
def calc_phase_amp_power(how='location'): p_data = pu.proj_data() subjects, sessions = p_data.get_meg_metadata() rois = p_data.roiLabels fs = 500 if how is 'location': df_list = [] for session in sessions: session_df = pd.DataFrame(index=subjects) for subject in subjects: prog = "%s - %s" % (session, subject) print('%s: Calculating infraslow power for %s with location' % (pu.ctime(), prog)) database = h5py.File('../data/multimodal_HCP.hdf5', 'r+') dset = database[subject + '/MEG/' + session + '/timeseries'][...] for ROIindex in range(len(rois)): data = dset[:, ROIindex] label = rois[ROIindex] # Get real amplitudes of FFT (only in postive frequencies) # Squared to get power fft_power = np.absolute(np.fft.rfft(data)) ** 2 # Get frequencies for amplitudes in Hz fft_freq = np.fft.rfftfreq(len(data), 1.0 / fs) infraslow_band = (.01, .1) # ('BOLD bandpass', (.01, .1)) freq_ix = np.where((fft_freq >= infraslow_band[0]) & (fft_freq <= infraslow_band[1]))[0] colname = '%s %s' % (session, label) if colname not in session_df: session_df[colname] = np.nan avg_power = np.mean(fft_power[freq_ix]) session_df.loc[subject][colname] = avg_power database.close() df_list.append(session_df) grand_df = pd.concat(df_list, axis=1) return grand_df elif how is 'bandpass': df_list = [] for sess in sessions: session_colnames = ['%s %s' % (sess, r) for r in rois] session_df = pd.DataFrame(index=subjects, columns=session_colnames) for subj in subjects: prog = "%s - %s" % (sess, subj) print('%s: Calculating infraslow power for %s with bandpass' % (pu.ctime(), prog)) f = h5py.File('../data/multimodal_HCP.hdf5', 'r') data = f[subj + '/MEG/' + sess + '/timeseries'][...] f.close() data = _butter_filter(data, fs=500, cutoffs=[.01, .1]) fft_power = np.absolute(np.fft.rfft(data, axis=0)) ** 2 average_power = np.mean(fft_power, axis=0) session_df.loc[subj] = average_power df_list.append(session_df) grand_df = pd.concat(df_list, axis=1) return grand_df elif how is 'truncated': df_list = [] for sess in sessions: session_colnames = ['%s %s' % (sess, r) for r in rois] session_df = pd.DataFrame(index=subjects, columns=session_colnames) for subj in subjects: f = h5py.File('../data/downsampled_MEG_truncated.hdf5', 'r') data = f[subj + '/MEG/' + sess + '/resampled_truncated'][...] f.close() data = _butter_filter(data, fs=500, cutoffs=[.01, .1]) fft_power = np.absolute(np.fft.rfft(data, axis=0)) ** 2 average_power = np.mean(fft_power, axis=0) session_df.loc[subj] = average_power df_list.append(session_df) grand_df = pd.concat(df_list, axis=1) return grand_df print('%s: Finished' % pu.ctime())
continue else: val = conj_res.loc[idx_label]['LV_1'] heatmap_data.loc[roi2][roi1] = val fig, ax = plt.subplots(figsize=(8, 6)) heatmap(data=heatmap_data, cmap='coolwarm', center=0.0, annot=True, fmt='.2f', cbar=True, square=True, ax=ax) fig.savefig(fig_dir + '/heatmap.svg') # plt.show() logging.info('%s: Finished' % pu.ctime()) if __name__ == "__main__": meg_subj, meg_sess = pu.proj_data.get_meg_metadata() rois = pu.proj_data().roiLabels pls_psqi_with_power(meg_sess, rois, fig_dir='../figures/PLS/card_sort/power', run_check=True) pls_psqi_with_bold_alpha_pac( fig_dir='../figures/PLS/card_sort/pac_bold_alpha', run_check=True) # pls_psqi_with_ppc_roi_version(fig_dir='../figures/PLS/card_sort/ppc_network_rois', run_check=True)