Mega‐Grant Running ICA on Eyes Closed EEG - LeoLedesma237/LeoWebsite GitHub Wiki
Overview
The function of this script is to run ICA only. Component rejection will occur in the following script.
Part 1: Load in EEG Raw File Names2.xlsx
- Loading in Sheet 1 is what makes this script clean only eyes-closed EEG files.
% Set the working directory
cd('Y:\STUDY 1\All EEG Files Organized\Preprocessed_RAW')
% Specify the filename
filename = 'EEG Raw File Names2.xlsx';
% Read the data from the Excel file (Eyes-Closed)
data = readtable(filename, 'Sheet', 1);
Part 2: Set the input and save pathways
% 1. Set the folder path to record the names of all the files there
input_filepath = 'Y:\STUDY 1\All EEG Files Organized\Preprocessed_RAW\RAW_eyes_open_and_eyes_closed_before_ICA\';
% 2. Set directory for where channel information is saved
channel_info_pathway = 'Y:\STUDY 1\All EEG Files Organized\Preprocessed_RAW\CSV_preprocessing\';
% 3. Set the folder path that you want the EEG data saved in
save_pathway = 'Y:\STUDY 1\All EEG Files Organized\Preprocessed_RAW\RAW_eyes_open_and_eyes_closed_after_ICA\';
Part 3: Remove file names that have already been preprocessed
% % % % % % Part 1: Reading in all the files in specified folder % % % % %
% % % % % % REMAINING CODE IS AUTOMATIC % % % % % % % %
fileNames = data.file_name2;
% Remove redundancies
% Only unprocessed files will be ran by the for loop below
Already_Processed= dir(save_pathway);
% Extract .set files
Already_Processed = {Already_Processed(contains({Already_Processed.name}, ".set")).name};
% Remove files that have already been preprocessed
eegFiles = fileNames(~ismember(fileNames,Already_Processed));
Part 4: Running ICA
- The 'PCA' number can only be calculated if we know what the number of interpolated channels are and the number of re-referenced electrodes.
% % % Part 2: Running the cleaning script on the following files % % % %
% Run an automatic version of the code for the FIRST 100 FILES!!!!
for ii = 1:length(eegFiles)
Current_eegFile = eegFiles{ii} %MUST BE SQUIGGLY LINE FOR SEGMENTATION TO WORK!!!!
%Import data - change the name of the ID
EEG = pop_loadset('filename',Current_eegFile,'filepath',input_filepath);
[ALLEEG, EEG, CURRENTSET] = eeg_store( ALLEEG, EEG, 0 );
% Load the CSV with channel information
ChanelInformationFile = [Current_eegFile '.csv'];
ChannelInformation = readtable([channel_info_pathway ChanelInformationFile]);
% Extract the required information
Starting_Channels = ChannelInformation.StartingChannels;
Interpolation_Num = ChannelInformation.NumInterpolated;
% Calculate the PCA Number
PCA_number = Starting_Channels - Interpolation_Num - 1 % The minus one represents re-referencing
% Down sample data to 250 Hz to make ICA faste
EEG = pop_resample( EEG, 250);
% Run ICA
EEG = pop_runica(EEG, 'icatype', 'runica', 'extended',1,'pca',PCA_number,'interrupt','on');
% Saving the EEG data with ICA ran
Save_FileName = strrep(Current_eegFile, '.set', '');
EEG = pop_saveset(EEG, 'filename',Save_FileName,'filepath',save_pathway);
end