[Eeglablist] ICA Problem
Walker Pedersen
wsp at uwm.edu
Fri Nov 8 09:58:57 PST 2013
Hi,
I am having trouble with ICA. I am using the script below to take continuous EEG data, rereference it to average mastoid, high-pass filter and then run ICA. The ICA appears to run and doesn't give me any errors, but when I try to plot the component maps I get the error "Not Enough Unique Sample Points". These data files are about 30 mins long, at a sampling rate of 512, so I don't think it is the case that there simply isn't enough data for the ICA.
This data was collected through ANT's ASA software, and was imported into EEGlab using their ASA's import plugin. The import appears to be successful, as the data can be plotted in EEGlab and looks normal. We have other data in the lab collected with neuroscan, that we have used ICA on successfully so I am wondering if there is something wrong with the importing. Has anyone else run into this problem?
For reference, we are using a 64 bit Linux system, Redhat 6.4. I am actually doing the importing on a 32 windows (xp), however, as the importer does not seem to work on the linux.
Thanks!
Walker
% Clear memory and the command window
clear
clc
% Initialize the ALLERP structure and CURRENTERP
ALLERP = buildERPstruct([]);
CURRENTERP = 0;
% This defines the set of subjects
subject_list = {'S2001'};
nsubj = length(subject_list); % number of subjects
%%%%%%%%%%%%% THIS PATH WILL NEED TO BE ADJUSTED FOR CLUSTER
% I've used lookup for newChanLoc.elp, which
% may funtion fine if it's on the path.
home_path = '/media/LGI/WalkerEmoReg/';
% Set the save_everything variable to 1 to save all of the intermediate files to the hard drive
% Set to 0 to save only the initial and final dataset and ERPset for each subject
save_everything = 0;
% Set the plot_PDFs variable to 1 to create PDF files with the waveforms
% for each subject (set to 0 if you don't want to create the PDF files).
plot_PDFs = 1;
% Loop through all subjects
for s=1:nsubj
fprintf('\n******\nProcessing subject %s\n******\n\n', subject_list{s});
% Path to the folder containing the current subject's data
data_path = [home_path subject_list{s} '/'];
% Check to make sure the dataset file exists
% Initial filename = path plus Subject# plus _EEG.set
sname = [data_path subject_list{s} '_eeg.set'];
if exist(sname, 'file')<=0
fprintf('\n *** WARNING: %s does not exist *** \n', sname);
fprintf('\n *** Skip all processing for this subject *** \n\n');
else
%
% Load original dataset
%
fprintf('\n\n\n**** %s: Loading dataset ****\n\n\n', subject_list{s});
EEG = pop_loadset('filename', [subject_list{s} '_eeg.set'], 'filepath', data_path);
%
% Populate channel locations
%
fprintf('\n\n\n**** %s: Adding channel location info ****\n\n\n', subject_list{s});
EEG = pop_chanedit(EEG, 'lookup','ChannelLocs.ced');
% Save dataset with _Chan suffix instead of _EEG
EEG.setname = [subject_list{s} '_Chan']; % name for the dataset menu
if (save_everything)
EEG = pop_saveset(EEG, 'filename', [EEG.setname '.set'], 'filepath', data_path);
end
%
% Rereferencing channels excluding
%
fprintf('\n\n\n**** %s: Rereferencing ****\n\n\n', subject_list{s});
EEG = pop_reref( EEG, [13 19],'exclude',[33:36] );
% Save dataset with _Chan suffix instead of _EEG
EEG.setname = [subject_list{s} '_avgref']; % name for the dataset menu
if (save_everything)
EEG = pop_saveset(EEG, 'filename', [EEG.setname '.set'], 'filepath', data_path);
end
%
% High-pass filter the EEG
%
fprintf('\n\n\n**** %s: High-pass filtering EEG at 0.05 Hz ****\n\n\n', subject_list{s});
EEG = pop_basicfilter( EEG, 1:32 , 'Cutoff', 0.05, 'Design', 'butter', 'Filter', 'highpass', 'Order', 2, 'RemoveDC', 'on' );
EEG.setname = [EEG.setname '_hpfilt'];
if (save_everything)
EEG = pop_saveset(EEG, 'filename', [EEG.setname '.set'], 'filepath', data_path);
end
%
% BINICA
%
fprintf('\n\n\n**** %s: Running BINICA ****\n\n\n', subject_list{s});
EEG = pop_runica(EEG, 'extended',1,'interupt','on');
EEG.setname = [EEG.setname '_ica'];
EEG = pop_saveset(EEG, 'filename', [EEG.setname '.set'], 'filepath', data_path);
end % end of the "if/else" statement that makes sure the file exists
end % end of looping through all subjects
fprintf('\n\n\n**** FINISHED ****\n\n\n');
More information about the eeglablist
mailing list