[Eeglablist] a few questions about your ICA-based preprocessing pipeline

Ahmad, Jumana jumana.ahmad at kcl.ac.uk
Tue Sep 26 23:43:22 PDT 2017


Hi Makoto and list,
I wondered if you had any slides or a web based tutorial for these ICA clustering steps. I am interested in single trial ERP analyses and would ideally like to use ICA to pick out the event related activity. Thank you.
Best wishes,
Jumana

On 27 Sep 2017, at 02:03, Makoto Miyakoshi <mmiyakoshi at ucsd.edu<mailto:mmiyakoshi at ucsd.edu>> wrote:

Dear Roberto,



***
Hi Makoto,

> So are you suggesting to run pop_runinca() with PCA.  Can I ask you the reason for that? Does it just speed up the decomposition?

Yes. ICA can also benefit from increasing datapoint/parameter ratio.

> Ok, I am slowly understanding the mechanics here. So you suggest to:
1. create a STUDY (call it STD1) for IC rejection only;
2. clustering ICs over datasets of the STUDY (call it STD2),  which will then create another (full?) STUDY.design of .set files (= the clustered ICs).
Is it at point 2 that you epoch the ICs? I still miss why epoch ICs of STD2?

If you don't need to see event-related brain potential, you don't need to epoch the data.

> So once I have all (epoched?) ICs in STD2, I can project the selected IC clusters to the actual data of STD1. Correct?

Correct.

> It might be a naive question (which is also related to my last question above), but why does projecting epoched ICs not cause to epoch the actual data as well?

It does because scalp channel data (EEG.data) will be re-constructed from EEG.icaact.

Makoto



On Sat, Sep 23, 2017 at 12:20 AM, Roberto Petrosino <roberto.petrosino at uconn.edu<mailto:roberto.petrosino at uconn.edu>> wrote:
Hello everyone,

many thanks for all your posts - they are all very helpful! I am replying to each of you below - sorry for the long email!.

Hi Clemens,

[…] I've found that Extended Infomax ICA is much faster in MNE-Python than in EEGLAB (even much faster than binica). So instead of days or weeks, computation time could go down to hours.

You can do many EEGLAB analyses with MNE-Python - I'd encourage you to read the tutorials and examples to get an overview. There's also a mailing list quite similar to this one if you have questions.

 Yeah, I did know that MNE-python could run ICA analysis, but my only concern that I would have to run IC classification for 30 subjects - I couldn’t find out how to cluster ICs like Makoto’s pipeline does. That’s basically the reason I am inclined to use eeglab for pre-processing and artifact rejection and then MNE-python for actual regression analyses. But if you do know some method in MNE similar to Makoto’s, I’d be willing to try that out too.

***
Hi Tarik,

See the following excellent website for learning about ICA classification. I recommend students to do at least 500 classifications, it's doable on smartphone. The tutorials and examples are excellent resources.
http://reaching.ucsd.edu:8000/auth/login<https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2Freaching.ucsd.edu%3A8000%2Fauth%2Flogin&data=01%7C01%7Cjumana.ahmad%40kcl.ac.uk%7C69663f15a5514310cf1b08d5054380c0%7C8370cf1416f34c16b83c724071654356%7C0&sdata=TZK8MpFc%2Fnry2%2BUjMNxYslf%2Fp9pLhAEhnHC0Fbv%2B%2FDo%3D&reserved=0>

See the multiple ICA classification plugins (MARA, ADJUST, SASICA, IC-MARC) for some near-automatic methods for removing unhealthy ICs. The articles on each of those plugins are also useful if you're just beginning with dense-EEG and ICA.

I have actually already started to do some classifications in the spare time (it’s really cool!). Also, many thanks for suggesting the classification plugins - I’ll surely check them out.

Overall, I recommend running ICA without PCA, but then just focusing on the first 35 ICs. Usually one can just pick out the top 10 neural ICs and reject the rest. It depends on why you're doing ICA (just to find blinks) or to actually examine the ICs. eeglab is built to help you stay in ICA land, rather than go back to channel-level space. This of course depends on multiple factors, such as whether you have good similar neural ICs for most of your subjects.

I actually need it just for artifact rejection (so basically blinks). So if I understand what you are saying, you suggestion is similation to Makoto’s (but see comments below on using PCA within ICA decomposition) - namely, decompose the signal in 35 ICs only and then select the neural ones.
If I understand what your last sentence above mean, you suggest to go over ICs of all subjects to make sure they have good similar neural components - is that right?

MNE python should have no problem eating the data that results from eeglab. If you find the exact method, please share it with the eeglab list. If you develop a method for passing data between eeglab and mne-python that would also be a cool thing to share.

I tried to use MNE with artifact-laden eeglab data, and it worked effortlessly. If someone is interested in trying that out, there are two special MNE functions - mne.io<https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmne.io&data=01%7C01%7Cjumana.ahmad%40kcl.ac.uk%7C69663f15a5514310cf1b08d5054380c0%7C8370cf1416f34c16b83c724071654356%7C0&sdata=nE5%2FyGGB7jyCF0xpM0h%2BDKs9BMNTV99ZgkeoyeHnt9k%3D&reserved=0>.read_raw_eeglab() for non-epoched data and mne.io<https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmne.io&data=01%7C01%7Cjumana.ahmad%40kcl.ac.uk%7C69663f15a5514310cf1b08d5054380c0%7C8370cf1416f34c16b83c724071654356%7C0&sdata=nE5%2FyGGB7jyCF0xpM0h%2BDKs9BMNTV99ZgkeoyeHnt9k%3D&reserved=0>.read_epochs_eeglab() for epoched data. See the tutorial<https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmartinos.org%2Fmne%2Fdev%2Fmanual%2Fmigrating.html&data=01%7C01%7Cjumana.ahmad%40kcl.ac.uk%7C69663f15a5514310cf1b08d5054380c0%7C8370cf1416f34c16b83c724071654356%7C0&sdata=xWDeWky2M9LI8rd4mGVaURqp6c8RAnA8iMGHINPIp4M%3D&reserved=0> for more info.

***
Hi Makoto,

If you are only interested in decomposing (for removing) eye blinks AND if you don't want to spend a week, use 'pca' option from infomax runica() GUI. You see 'extended', 1 there. Add 'pca', 35 to decompose 35 ICs only. This should be enough to capture eye blinks. Change the number as necessary. It should work even with 10-20 if your target is eye blinks.

So are you suggesting to run pop_runinca() with PCA.  Can I ask you the reason for that? Does it just speed up the decomposition?

What I suggest in doing so is to select IC clusters at the group level instead of opening 30 subjects and going through 256x30 ICs manually. My suggested method uses power spectrum density (PSD) only for clustering, with scalp maps as additional info to help evaluations. This should be done with continuous data. As a result, it will create another set of .set files. Does it make sense?

Ok, I am slowly understanding the mechanics here. So you suggest to:

1. create a STUDY (call it STD1) for IC rejection only;
2. clustering ICs over datasets of the STUDY (call it STD2),  which will then create another (full?) STUDY.design of .set files (= the clustered ICs).

Is it at point 2 that you epoch the ICs? I still miss why epoch ICs of STD2?

> On a related note - when and how exactly do I remove the IC from the actual data?

  1.  When creating STUDY, outside-brain ICs can be kicked out.
  2.  When creating STUDY, ICs with dipoles with residual variance (i.e. difference from ideal dipolar projection on scalp) > 15 %, as a default value, can be rejected.
  3.  When projecting the selected IC clusters, the ICs contained by the unselected clusters are rejected.

So once I have all (epoched?) ICs in STD2, I can project the selected IC clusters to the actual data of STD1. Correct? It might be a naive question (which is also related to my last question above), but why does projecting epoched ICs not cause to epoch the actual data as well?

Many many thanks for all of your for the help!

Have a nice weekend,

-Roberto

----------
Roberto Petrosino
Ph.D. Student in Linguistics
CT Institute for the Brain and Cognitive Sciences
University of Connecticut


On Sep 21, 2017, at 4:26 AM, Brunner, Clemens (clemens.brunner at uni-graz.at<mailto:clemens.brunner at uni-graz.at>) <clemens.brunner at uni-graz.at<mailto:clemens.brunner at uni-graz.at>> wrote:

Hi Roberto!

Regarding your second question, I've found that Extended Infomax ICA is much faster in MNE-Python than in EEGLAB (even much faster than binica). So instead of days or weeks, computation time could go down to hours.

You can do many EEGLAB analyses with MNE-Python - I'd encourage you to read the tutorials and examples to get an overview. There's also a mailing list quite similar to this one if you have questions.

Clemens


On 20 Sep 2017, at 20:27, Makoto Miyakoshi <mmiyakoshi at ucsd.edu<mailto:mmiyakoshi at ucsd.edu>> wrote:

Dear Roberto,

1) My initial concern is that I want to run regression analyses through MNE-python on epoched and artifact-free data (this is because the matlab toolbox for it is quite buggy). Is that at all compatible with your ASR pipeline?

I have no experience in MNE-python thing, I don't even know what it represent for!
So I can't say anything for sure. Sorry.

My plan was to run ICA on all data throught eeglab, and then exports the clean datasets through MNE. Do you think it is feasible?

Technically yes, as long as the thing can import Matlab variables in one way or another.

2) Running ICA on 256 components for 30 subjects may last days (if not weeks), so I was wondering what your opinion on that is. Since the goal is just to find blinks and other noise, I was thinking that I could ask it to estimate a smaller number of components - but then what would the consequences be?

If you are only interested in decomposing (for removing) eye blinks AND if you don't want to spend a week, use 'pca' option from infomax runica() GUI. You see 'extended', 1 there. Add 'pca', 35 to decompose 35 ICs only. This should be enough to capture eye blinks. Change the number as necessary. It should work even with 10-20 if your target is eye blinks.

3) I am using your batch code for multiple subjects, and I am a little unclear about the last steps of the ASR pipeline that are not present in the batchcode (i.e., steps 13-15). If I understand well, you suggest to create a STUDY just for clustered IC rejection, so that I can select clustered ICs to apply on the whole STUDY. But then why do you suggest to epoch the ICs and then create a full STUDY?

What I suggest in doing so is to select IC clusters at the group level instead of opening 30 subjects and going through 256x30 ICs manually. My suggested method uses power spectrum density (PSD) only for clustering, with scalp maps as additional info to help evaluations. This should be done with continuous data. As a result, it will create another set of .set files. Does it make sense?

On a related note - when and how exactly do I remove the IC from the actual data?
• When creating STUDY, outside-brain ICs can be kicked out.
• When creating STUDY, ICs with dipoles with residual variance (i.e. difference from ideal dipolar projection on scalp) > 15 %, as a default value, can be rejected.
• When projecting the selected IC clusters, the ICs contained by the unselected clusters are rejected.
Makoto




On Sun, Sep 17, 2017 at 8:51 AM, Roberto Petrosino <roberto.petrosino at uconn.edu<mailto:roberto.petrosino at uconn.edu>> wrote:
Dear Dr. Mayakoshi,

I am a PhD Student in Linguistics at UConn, and I am currently working on a project testing the EEG response to words with a EGI 256-channel net. I am trying to use your ASR pipeline, and I have a few questions. I am sorry that I am writing directly to you, but I got no reply from the eeglab mailing list, so I was wondering if you could help out. Apologies in advance for my naive questions - this is my first time using ICA for artifact rejection.

1) My initial concern is that I want to run regression analyses through MNE-python on epoched and artifact-free data (this is because the matlab toolbox for it is quite buggy). Is that at all compatible with your ASR pipeline?
My plan was to run ICA on all data throught eeglab, and then exports the clean datasets through MNE. Do you think it is feasible?

2) Running ICA on 256 components for 30 subjects may last days (if not weeks), so I was wondering what your opinion on that is. Since the goal is just to find blinks and other noise, I was thinking that I could ask it to estimate a smaller number of components - but then what would the consequences be?

3) I am using your batch code for multiple subjects, and I am a little unclear about the last steps of the ASR pipeline that are not present in the batchcode (i.e., steps 13-15). If I understand well, you suggest to create a STUDY just for clustered IC rejection, so that I can select clustered ICs to apply on the whole STUDY. But then why do you suggest to epoch the ICs and then create a full STUDY? On a related note - when and how exactly do I remove the IC from the actual data?

Many thanks for your help in advance.

Best regards,

-Roberto

----------
Roberto Petrosino
Ph.D. Student in Linguistics
CT Institute for the Brain and Cognitive Sciences
University of Connecticut





--
Makoto Miyakoshi
Swartz Center for Computational Neuroscience
Institute for Neural Computation, University of California San Diego
_______________________________________________
Eeglablist page: http://sccn.ucsd.edu/eeglab/eeglabmail.html<https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsccn.ucsd.edu%2Feeglab%2Feeglabmail.html&data=01%7C01%7Cjumana.ahmad%40kcl.ac.uk%7C69663f15a5514310cf1b08d5054380c0%7C8370cf1416f34c16b83c724071654356%7C0&sdata=GSmM%2BJgPp7Pwkh7pmAWjPkEVl%2F1dLoKHnd3UWywmGkU%3D&reserved=0>
To unsubscribe, send an empty email to eeglablist-unsubscribe at sccn.ucsd.edu<mailto: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<mailto:eeglablist-request at sccn.ucsd.edu>





--
Makoto Miyakoshi
Swartz Center for Computational Neuroscience
Institute for Neural Computation, University of California San Diego
_______________________________________________
Eeglablist page: https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsccn.ucsd.edu%2Feeglab%2Feeglabmail.html&data=01%7C01%7Cjumana.ahmad%40kcl.ac.uk%7C69663f15a5514310cf1b08d5054380c0%7C8370cf1416f34c16b83c724071654356%7C0&sdata=GSmM%2BJgPp7Pwkh7pmAWjPkEVl%2F1dLoKHnd3UWywmGkU%3D&reserved=0
To unsubscribe, send an empty email to eeglablist-unsubscribe at sccn.ucsd.edu<mailto: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<mailto:eeglablist-request at sccn.ucsd.edu>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://sccn.ucsd.edu/pipermail/eeglablist/attachments/20170927/4d88c2e5/attachment-0001.html>


More information about the eeglablist mailing list