[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