From e188cb97e80cbb3d9c2e6679b5d631215595a9dd Mon Sep 17 00:00:00 2001 From: Julius Date: Sat, 27 Mar 2021 21:46:34 +0100 Subject: [PATCH] =?UTF-8?q?=E2=80=9Eplotting.py=E2=80=9C=20l=C3=B6schen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plotting.py | 115 ---------------------------------------------------- 1 file changed, 115 deletions(-) delete mode 100644 plotting.py diff --git a/plotting.py b/plotting.py deleted file mode 100644 index 233e04a..0000000 --- a/plotting.py +++ /dev/null @@ -1,115 +0,0 @@ -import mne -import matplotlib.pyplot as plt - -from mne.preprocessing import create_eog_epochs -from mne_bids import BIDSPath, read_raw_bids -from utils.ccs_eeg_utils import read_annotations_core -from utils.file_utils import get_epochs - - -def load_unprocessed_subject(subject, dataset): - """ - Load the eeg data of a subject - :param subject: The subject of which the data will be loaded - :param dataset: The dataset which will be loaded - :return: the subject data - """ - bids_path = BIDSPath(subject=subject, task=dataset, session=dataset, datatype='eeg', suffix='eeg', - root='Dataset\\' + dataset) - raw = read_raw_bids(bids_path) - # Add annotations - read_annotations_core(bids_path, raw) - return raw - - -def filter_data(raw): - """ - Filter the data of a single subject with a bandpass filter. - The lower bound ist 0.5Hz to compensate the slow drifts. - The upper bound is 50Hz to compensate the high frequencies, including the power line spike at 60Hz - :param raw: The data to be filtered - :return: The filtered data - """ - raw.filter(0.5, 48, fir_design='firwin') - return raw - - -def plot_filter_data(): - ds = 'N170' - for subj in ['014']: - data = load_unprocessed_subject(subj, ds) - data.load_data() - # data.plot(n_channels=len(data.ch_names), block=True, scalings=40e-6) - fig = mne.viz.plot_raw_psd(data, fmax=80, average=True, show=False) - fig.savefig("plots/frequency_nonfiltered_subj_" + subj) - filter_data(data) - fig = mne.viz.plot_raw_psd(data, fmax=80, average=True, show=False) - fig.savefig("plots/frequency_filtered_subj_" + subj + "_48Hz.png") - # data.plot(n_channels=len(data.ch_names), block=True, scalings=40e-6) - - -def plot_filter_data_epoched(subj): - ds = 'N170' - data = load_unprocessed_subject(subj, ds) - data.load_data() - filter_data(data) - data.annotations.delete(list(range(0, len(data.annotations)))) - data.plot(n_channels=len(data.ch_names), block=True, scalings=40e-6) - get_epochs(data)[0].average().plot() - - -def plot_cleaning(): - ds = 'N170' - for subj in ['014']: - data = load_unprocessed_subject(subj, ds) - data.load_data() - filter_data(data) - folder = "Dataset\\" + ds + "\\sub-" + subj + "\\ses-" + ds + "\\eeg\\" - filepath = folder + "sub-" + subj + "_task-" + ds - print(filepath) - ann = mne.read_annotations(filepath + "_" + "badannotations.csv") - data.annotations.append(ann.onset, ann.duration, ann.description) - data.plot(n_channels=len(data.ch_names), block=True, scalings=40e-6) - - -def plot_ica(): - ds = 'N170' - for subj in ['014']: - data = load_unprocessed_subject(subj, ds) - folder = "Dataset\\" + ds + "\\sub-" + subj + "\\ses-" + ds + "\\eeg\\" - filepath = folder + "sub-" + subj + "_task-" + ds - ann = mne.read_annotations(filepath + "_" + "badannotations.csv") - data.annotations.append(ann.onset, ann.duration, ann.description) - data.load_data() - data.set_channel_types({'HEOG_left': 'eog', 'HEOG_right': 'eog', 'VEOG_lower': 'eog'}) - data.set_montage('standard_1020', match_case=False) - ica_raw = data.copy() - ica_raw.filter(l_freq=1, h_freq=None) - - # Then run ICA - ica = mne.preprocessing.ICA(method="fastica", - random_state=123) # Use a random state for reproducable results #TODO Old Random state 123 or new one? - ica.fit(ica_raw, verbose=True) - ica_raw.load_data() - # ica.plot_components(inst=ica_raw, ch_type='eeg', contours=0, topomap_args={'extrapolate': 'head'}, - # psd_args={'fmin': 0, 'fmax': 80}) - ica.plot_sources(ica_raw) - ica.plot_properties(inst=ica_raw, dB=False, topomap_args={'extrapolate': 'head', 'contours': 0}, - psd_args={'fmin': 3, 'fmax': 50}, picks=['eeg']) - - -def plot_joint_eog_plots(): - ds = 'N170' - for subj in ['014']: - data = load_unprocessed_subject(subj, ds) - data.load_data() - data.set_channel_types({'HEOG_left': 'eog', 'HEOG_right': 'eog', 'VEOG_lower': 'eog'}) - data.set_montage('standard_1020', match_case=False) - eog_evoked = create_eog_epochs(data).average() - eog_evoked.apply_baseline(baseline=(None, -0.2)) - eog_evoked.plot_joint() - - -# plot_ica() -# plot_joint_eog_plots() -plot_filter_data_epoched('003')