[Eeglablist] ICA analysis and Interpolation

Andreas Widmann widmann at uni-leipzig.de
Tue Mar 15 05:54:35 PDT 2016


Hi Andrea,

three comments:

(1) There’s a recent publication by Winkler and colleagues on exactly these issues (filtering and ICA quality; validity of application of ICA components to data with different high-pass):
https://www.researchgate.net/publication/281290619_On_the_influence_of_high-pass_filtering_on_ICA-based_artifact_reduction_in_EEG-ERP
Baseline: Yes, this should solve your problem.

(2) I do not see why you would need the same number of epochs? The ICA activation matrix in icaact (and icawinv; not necessary to copy, btw) should be recomputed after application to the 0.1Hz-set (done by eeg_checkset). I would suggest to make sure that *at least* the epochs excluded from the dataset for which ICA was computed (1Hz) are also removed from the dataset ICA is applied to (0.1Hz). You could do so by saving the EEG.reject structure from the 1Hz-set before actually rejecting the marked epochs and later apply it to the 0.1Hz-set. Rejecting additional epochs in the 0.1Hz-set should not make any difference for the ICA solution. After removing artifactual components (from the 0.1Hz-set; see below!) we regularly check for and reject epochs with remaining artifacts.

> Load 1Hz filtered data set after ICA has been conducted and bad
> >>> components have been removed, then:
(3) Just to be sure: The approach described in this comment on the code is *incorrect*! You have to apply ICA to the other (0.1Hz) dataset BEFORE removing any components. This is essential, otherwise the ICA solution is invalid!

Hope this helps!
Andreas

> Am 14.03.2016 um 13:09 schrieb Andrea Helo <andreahelo at gmail.com>:
> 
> Hi,
> 
> Thank you very much for your replies. They have been very useful. I will follow the advice and I will interpolate after running ICA. 
> 
> I have another question related to the filters this time. 
> 
> I am filtering between 1 and 30 Hz before running ICA. I have read that very low frequencies aren't good for ICA but the problem is that I have also read that the amplitude of the components might be reduced when low frequency are filtered. 
> 
> Do you thnik this might be a problem? In case it is I have also found a way to apply the ICA weights from 1Hz filtered data to the 0.1Hz filtered data.  
> 
> Load 1Hz filtered data set after ICA has been conducted and bad
> 
> >>> components have been removed, then:
> >>* TMP.icawinv = EEG.icawinv;
> 
> >>>
>  *>>* TMP.icasphere = EEG.icasphere;
> 
> >>>
>  *>>* TMP.icaweights = EEG.icaweights;
> 
> >>>
>  *>>* TMP.icachansind = EEG.icachansind;
> 
> >>>
>  *>>>>* % apply to epoched dataset
> 
> >>>
>  *>>* clear EEG;
> 
> >>>
>  *>>* EEG = pop_loadset('filename', [SUBJ{s}, '_bcgrem.set'], 'filepath', PATHIN);
> 
> >>>
>  *>>* EEG.icawinv = TMP.icawinv;
> 
> >>>
>  *>>* EEG.icasphere = TMP.icasphere;
> 
> >>>
>  *>>* EEG.icaweights = TMP.icaweights;
> 
> >>>
>  *>>* EEG.icachansind = TMP.icachansind;
> 
> >>>
>  *>>* clear TMP;
> 
> >>>
>  *>>* EEG = pop_saveset(EEG, 'filename',[SUBJ{s}, '_epoched.set'],
> 
> >>>
>  *>>* 'filepath',PATHOUT);
> 
> >>>
>  *>>* [ALLEEG, EEG, CURRENTSET] = eeg_store(ALLEEG, EEG, 0);
> 
> >>>
>  *>>>>* end
> 
> >>> *>>* eeglab redraw;*
> Do you think this would solve the problem?
> 
> ... and I have another problem related to the previous  point. I apply the same pre-processing (before running ICA) to the two data sets (1Hz filtered data and 0.1Hz filtered, following a protocol proposed by EEGLAB: http://sccn.ucsd.edu/wiki/Makoto's_preprocessing_pipeline).  Using this protocol I reject epochs automatically but I don't get the same number of epochs in both datasets. The 0.1Hz filtered data is noisier, so I get less good epochs and I can't pass the ICA components from one datasets to the other. So, the questions are
> 
> 
> Should I just export the epochs from one dataset to the other?
> Do you know how to do that?
> 
> 
> THANK YOU IN ADVANCE FOR YOUR HELP!
> 
> On Sun, Feb 28, 2016 at 1:39 AM, Tarik S Bel-Bahar <tarikbelbahar at gmail.com> wrote:
> Hello Andrea, I think you are re-referencing at a good time.  If you
> haven't had a chance to, try Googling the eeglablist + your
> keywords/questions to find any similar posts from the past. Makoto's
> pipeline mentioned in past eeglablist posts has a
> prototypical data processing pipeline. Consider staying in ICA space
> and analyzing the components.
> 
> You wrote: 1- Is it possible interpolate channel in epoched data or is
> it  better to always interpolate in continuous data?
> **Yes, I think either way is fine, but it may depend on the algorithm
> that is used for interpolation.
> 
> You wrote: 2- I have removed bad channels to run ICA, so those
> channels are not in the list of channels to be interpolated anymore
> after ICA. So, is there a way to interpolate after removing channels?
> **Yes, u should be able to use the interpolate function in eeglab gui.
> See also the matlab help and Google online documentation on
> interpolation function in eeglab.
> 
> 
> **Let's say you have 2 infants. One has 45 good channels for ICA, and
> one has 40 channels for ICA. No problem. Each one has their own ICA. I
> assume you will then "remove the bad ICs" and "rebuild the EEG data"
> for each participant. Then you would interpolate channels for each
> participant. Then you would have ICA-cleaned data from two
> participants, with the same 64 channels for each participant.
> 
> **Please note that various groups drop  low channels below the ears
> and eyes line before ICA for infant data, e.g., J. Richards)
> 
> ***I would say take a look at the differences in any in ICA results
> when using jsut shorter (~1000 ms) epochs versus using longer (3000
> ms+) epochs. They shoud look very similar.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> On Thu, Feb 25, 2016 at 8:39 AM, Andrea Helo <andreahelo at gmail.com> wrote:
> > Dear all,
> >
> > I have an issue regarding ICA for artifact correction that I really would
> > appreciate some help with. I would also  appreciate if someone could approve
> > or suggest any modifications in my pre-processing order.
> >
> > Here is some background information:
> > I have recorded children data (24-month-olds) with EGI, 128 channels.
> > The experiment contains 144 trials (72 per condition) where a picture is
> > presented during 500 ms  followed by a word (700 ms) then there is an
> > intertrial of 2500 ms (I trigger the trials manually when the child is
> > looking at the screen).
> > I exported the data, and I am currently starting to pre-process the data
> > using EGGLab.
> > I have created epochs of 3500 ms in order to run ICA to detect eye-movement
> > artifacts (I have chosen 3500ms because I would like to keep as much data as
> > possible for ICA. I would like to compare ERP in shorter epochs of 1000 ms
> > later).
> >
> > My pre-processing order is the following:
> >
> > Filtering (1HZ-30Hz),
> > Reducing number of channels to 64 and then removing bad channels
> > Re-referencing to average
> > Epoching (3500ms),
> > Removing baseline,
> > Removing bad epochs
> > Running ICA to detect artifacts
> >
> > One thing I am not sure about is whether I am re-referencing- at the right
> > point.
> >
> > Another issue is interpolation. I have read that it is not recomended
> > interpolate before running ICA . So I am removing bad channels before
> > running ICA but as a consequence I am having different amount of channels
> > per subject. I have also read that it is possible interpolate after running
> > ICA but I am not sure how to do it and I have two doubts related to that:
> >
> > 1- Is it possible interpolate channel in epoched data or is it  better to
> > always interpolate in continuous data? I have run ICA in epoched data first
> > and after that I will have to interpolate in the epoched data.
> > 2- I have removed bad channels to run ICA, so those channels are not in the
> > list of channels to be interpolated anymore after ICA. So, is there a way to
> > interpolate after removing channels?
> >
> >
> > Thanks in advance for your help,
> >
> > --
> > Andrea
> >
> >
> > _______________________________________________
> > 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
> 
> 
> 
> -- 
> Andrea 
> 
> _______________________________________________
> 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




More information about the eeglablist mailing list