[Eeglablist] ICA problem

Joseph Dien jdien07 at mac.com
Mon Feb 1 06:56:50 PST 2010


When you say "so long", how long do you mean?  While ICA is not by its nature a fast procedure, certain datasets can take much longer than usual.  For example, I find that if two channels are perfectly correlated (1 or -1) then an ICA run will take much longer.  This can happen if the data is mean mastoid referenced and both channels are explicitly included in the data because they will have a perfect -1 correlation (see Dien, 1998 for reference issues).  It can also happen if a channel is shorted out during acquisition and the reference channel is explicitly included because then they will have a perfect correlation.  Also if two channels are shorted together during the data acquisition they will be perfectly correlated with each other.  My EP Toolkit (https://sourceforge.net/projects/erppcatoolkit/) has code for dealing with these situations so you might want to look into it.  It implements an automated artifact correction routine that relies on EEGlab's runICA code, among other things.

Cheers!

Joe



On Jan 29, 2010, at 4:49 AM, peng wang wrote:

> Hi there,
> 
>    I am using ICA to remove blinks via EEGLab. My dataset has 122 channels, and it takes so long to compute 122 components. 
>    (1) So I tried to use the option "ncomps" (say, 24) to reduce the number of components. However, an error message appears after computing: "Matrix dimensions must agree". 
> 
>    (2) Then I tried fastICA instead as following,
> 
> ==================
>  sz = size(EEG.data);
>  nchans = sz(1);
>  npts = sz(2);
>  ntrials = sz(3);
>  clear sz;
>  nICs = 24;
>  data = reshape(EEG.data,nchans,npts*ntrials);
>  [ica,V,W] = fastica(data,'numOfIC',nICs,'approach','symm');
>  EEG.icasphere = eye(nchans);
>  EEG.icaact = single(reshape(ica,nICs,npts,ntrials));
>  EEG.icawinv = V;
>  EEG.icaweights = W;
>  EEG = eeg_checkset( EEG );
>  clear V W ica data;
> 
>  EEG = pop_saveset( EEG, 'filename','test_raw_ica');
> ==================
> 
>    Everything seems fine. But when I reject the blink component via GUI of eeglab and load the data again, Something strange happens. It seems the amplitude of EEG.data become much smaller, about in  -1~1 range.  Thus I wonder whether there was some normalization behind, and how can I correct it? The problem would not repeat if I choose the number of components same as channels event in fast ICA (e.g. change to "nICs = nchans" in the above code).
> 
>    Thank you for your help.
> 
> best
> Peng
> _______________________________________________
> Eeglablist page: http://sccn.ucsd.edu/eeglab/eeglabmail.html
> To unsubscribe, send an empty email to eeglablist-unsubscribe at sccn.ucsd.edu
> For digest mode, send an email with the subject "set digest mime" to eeglablist-request at sccn.ucsd.edu


--------------------------------------------------------------------------------

Joseph Dien,
Senior Research Scientist
University of Maryland 
7005 52nd Avenue
College Park, MD 20742-0025

E-mail: jdien07 at mac.com
Phone: 301-226-8848
Fax: 301-226-8811
http://homepage.mac.com/jdien07/












More information about the eeglablist mailing list