[Eeglablist] Questions on ICA

Makoto Miyakoshi mmiyakoshi at ucsd.edu
Sun Jul 5 18:32:06 PDT 2015


Dear Helen,

> Is it fine to feed all 16 conditions into ICA?

Sure.

> Or is it more advisable to use only mutually exclusive conditions?

If you have EEG.nbchan^2 x 30 or more datapoints for each condition.
However, when you separate ICA for each condition, you'll have A LOT of
trouble later at the group-level analysis (or it's the same after all?) You
need to use 'session'... avoid this kind of complexity if you say you are
new to this field. Clean the continuous data and run ICA. For that, 1) run
1-Hz high-pass filter 2) use clean_rawdata plugin by Christian Kothe
(simpler alternative is my trimOutlier... with this you can also check the
whole data at a glance)

> "Your memory options for saving datasets does not correspond to the
format of the datasets on disk (ignoring memory options). Saving to
matlab.mat"

Wow that's the strange one. You may need to talk to Arno/Ramon. Before
trying that, I'd like you to check if your EEGLAB has successfully created
eeg_option() file (or something like that) Sometimes people fail to create
it and have weird trouble like that, and I saw a few suspicious cases these
days... there maybe a cause that creates this trouble systematically. Your
code looks fine to me (without running it on Matlab).

> Third, our EEG data consists of 128 channels. We are considering reducing
that number so that we don't end up with 128 ICs --- but is there any
consensus on an optimal number of channels/components to aim for? Any
recommended reduction method?

(number of channels)^2 x 30 when you have 30 channels, and '30' should go
up exponentially when you have more channels. Jason told me for 100 ch, one
million datapoints as a rule of thumb. How many datapoints do you have?

> And finally, at what point is it best to run DIPFIT? All the files
consist of trials from the same subject and session - so then is it
redundant to compute DIPFIT separately for each condition?

See the recommended pipeline
http://sccn.ucsd.edu/wiki/Makoto's_preprocessing_pipeline
Each DIPFIT is per ICA. This is because you are computing independent
sources.

> The ultimate goal is to run our data through connectivity analysis in
SIFT, but of course we first need to iron out these details in the
pre-processing stage.

If that's the case, you should not apply ordinary high-pass filter for the
final analysis. Run 1-Hz high-pass only for ICA purpose. SIFT has linear
regression based high-pass solution. Use it instead of FIR/IIR. Also, use
CleanLine to remove 50/60 Hz line noise. Don't use standard low-pass
filter; use very mild one, even for anti-aliasing purpose. Set your
multivariate Granger upper limit freq range far from the nyquist. See
details for recent my question to the list. Andreas Widmann is answering in
detail about these issues. Read also Seth et al. (2015) JoN, and Barnett
and Seth (2011) for J Neurosci Method.

Makoto



On Wed, Jul 1, 2015 at 12:36 PM, Helen L. Wieffering <hwieffer at bowdoin.edu>
wrote:

>  Hi everyone,
>
> I am a relatively new user of EEGlab and have a few questions regarding
> ICA and DIPFIT. I would greatly appreciate any available help -- thanks in
> advance.
>
> First, our data was taken as subjects completed two separate tasks. In the
> interest of making detailed comparisons, we have sorted the data into 16
> separate files according to condition. However, some of these conditions
> contain overlap among trials: e.g. Correct_Task1, Correct_Task_2 will
> overlap with Correct_All_Tasks. Is it fine to feed all 16 conditions into
> ICA? Or is it more advisable to use only mutually exclusive conditions?
>
> Second, I've had significant trouble saving the datasets after computing
> ICA. Here's the code we used:
>
>         % concatenate each subject's condition datasets and run ICA
>         [ALLEEG EEG CURRENTSET] = pop_newset(ALLEEG, EEG, CURRENTSET,
> 'retrieve', cleandata, 'study', 0);
>         EEG = eeg_checkset(EEG);
>         EEG = pop_runica(EEG, 'icatype', 'runica', 'concatcond', 'on',
> 'options', {'extended', 1});
>         [ALLEEG EEG CURRENTSET] = pop_newset(ALLEEG, EEG, CURRENTSET,
> 'savenew', ICAfile, 'gui', 'off');
>         EEG = eeg_checkset(EEG);
>
> After which, Matlab outputs a message reading:
> "Your memory options for saving datasets does not correspond to the format
> of the datasets on disk (ignoring memory options). Saving to matlab.mat"
>
> This seems to occur consistently, no matter which memory options I choose.
> How can I make sure that ICA components are saved to the corresponding data
> file?
> So far, the only solution has been to build a study out of all 16 files
> and then running ICA on the study ... however, this seems to apply
> identical ICA components to each file, which doesn't seem right either. Any
> ideas on what the problem might be?
>
> Third, our EEG data consists of 128 channels. We are considering reducing
> that number so that we don't end up with 128 ICs --- but is there any
> consensus on an optimal number of channels/components to aim for? Any
> recommended reduction method?
>
> And finally, at what point is it best to run DIPFIT? All the files consist
> of trials from the same subject and session - so then is it redundant to
> compute DIPFIT separately for each condition?
>
> Again, thanks for any and all help. The ultimate goal is to run our data
> through connectivity analysis in SIFT, but of course we first need to iron
> out these details in the pre-processing stage.
>
> Best,
>
> Helen Wieffering
> Bowdoin College
>



-- 
Makoto Miyakoshi
Swartz Center for Computational Neuroscience
Institute for Neural Computation, University of California San Diego
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://sccn.ucsd.edu/pipermail/eeglablist/attachments/20150705/790f65d5/attachment.html>


More information about the eeglablist mailing list