[Eeglablist] Automatic channel rejection by script

Sebastian Sauppe sauppe.s at gmail.com
Tue Jul 10 01:02:02 PDT 2018


Dear Makoto,

thanks a lot for your reply. The problem w
th just using the indices that pop_rejchan returns is that they do not match the indices in the EEG dataset because I exclude the EOG channels from pop_rejchan. (I want to keep them in in any case.) This means that E9 is returned by pop_rejchan as having index 8 (because E8 was not considered), but in the EEG set it has index 9.

The solution that I resorted to now is not very elegant but does the job. I make a copy of the returned bad electrodes and then map them to their correct indices in the EEG set by hard-coding it. I.e. what is returned as index 8 by pop_rejchan should be index 9 (electrode E9) in the set file (and later also matching indices to compensate for having E57 and E100 as reference electrodes).

indelec_pre_ICA_original = indelec_pre_ICA;
…
indelec_pre_ICA(indelec_pre_ICA_original == 8) = 9; % E9
indelec_pre_ICA(indelec_pre_ICA_original == 9) = 10; % E10
indelec_pre_ICA(indelec_pre_ICA_original == 10) = 11; % E11
indelec_pre_ICA(indelec_pre_ICA_original == 11) = 12; % E12
indelec_pre_ICA(indelec_pre_ICA_original == 12) = 13; % E13
indelec_pre_ICA(indelec_pre_ICA_original == 13) = 15; % E15
indelec_pre_ICA(indelec_pre_ICA_original == 14) = 16; % E16
indelec_pre_ICA(indelec_pre_ICA_original == 15) = 17; % E17
...

That is not very satisfying to hard-code it like this, though.

Regards,
Sebastian

-----------
Dr. Sebastian Sauppe
Department of Comparative Linguistics, University of Zurich
Homepage: https://sites.google.com/site/sauppes/ <https://sites.google.com/site/sauppes/>
Twitter: @SebastianSauppe <https://twitter.com/SebastianSauppe>
Google Scholar Citations: https://scholar.google.de/citations?user=wEtciKQAAAAJ <https://scholar.google.de/citations?user=wEtciKQAAAAJ> 
ResearchGate: http://www.researchgate.net/profile/Sebastian_Sauppe <http://www.researchgate.net/profile/Sebastian_Sauppe>
ORCID ID: http://orcid.org/0000-0001-8670-8197 <http://orcid.org/0000-0001-8670-8197>

> Am 10.07.2018 um 01:51 schrieb Makoto Miyakoshi <mmiyakoshi at ucsd.edu>:
> 
> Dear Sebastian,
> 
> > Is there a way to extract the actual indices of rejected channels so that in the later step the correct channels are interpolated? 
> 
> You have it, which is [1:7 9 10:13 15 16:20 22 23 24 26 27:122 127] 
> 
> > Can this somehow be done via the the electrode names rather their indices?
> 
> You can obtain it as
> 
> rejectedChannelLabels = {EEG.chanlocs([1:7 9 10:13 15 16:20 22 23 24 26 27:122 127]).labels}';
> 
> For this kind of operation, see below. The wiki page is about how to deal with event types, but the same techniques can be used for EEG.chanlocs.
> https://sccn.ucsd.edu/wiki/Makoto's_useful_EEGLAB_code#Event_types <https://sccn.ucsd.edu/wiki/Makoto's_useful_EEGLAB_code#Event_types>
> 
> Makoto
> 
> On Mon, Jul 9, 2018 at 11:13 AM Sebastian Sauppe <sauppe.s at gmail.com <mailto:sauppe.s at gmail.com>> wrote:
> Dear EEGLAB list members,
> 
> during preprocessing of data from a 128 channel EGI Geodesic Sensor Net, I want to automatically reject channels and save their indices so that I can later interpolate the reject channels. However, I want to exclude EOG channels from this step because I want to keep them for classifying ICs later.
> 
> When I run the command (excluding EOG channels)
> 
> >> [EEG, indelec] = pop_rejchan(EEG, 'elec',[1:7 9 10:13 15 16:20 22 23 24 26 27:122 127] ,'threshold',5,'norm','on','measure','kurt’);
> 
> EEGLAB rejects 10 channels in my example data set and gives me their indices. However, the indices are continuously counted excluding the EOGs so that they don’t always reflect the channel indices in the actual dataset. The EOGs are channels [E8 E14 E21 E25 E126 E126 E127 E128] and in the list with rejected channels, for example E9 has index 8 because E8 was not included, E15 has index 13 because E14 was not included etc.
> 
> Is there a way to extract the actual indices of rejected channels so that in the later step the correct channels are interpolated? Can this somehow be done via the the electrode names rather their indices?
> 
> Any hint is highly appreciated.
> 
> Computing kurtosis for channels...
> 10 electrodes labeled for rejection
> #	Elec.	Measure
> 1	E1	21.11	*Bad*
> 2	E2	0.52
> 3	E3	5.41	*Bad*
> 4	E4	-1.22
> 5	E5	-0.90
> 6	E6	-0.70
> 7	E7	-0.55
> 8	E9	14.22	*Bad*
> 9	E10	5.08	*Bad*
> 10	E11	-1.37
> 11	E12	-1.14
> 12	E13	-1.17
> 13	E15	2.08
> 14	E16	2.31
> 15	E17	2.96
> 16	E18	4.43
> 17	E19	1.90
> 18	E20	2.88
> 19	E22	2.19
> 20	E23	3.88
> 21	E24	8.80	*Bad*
> 22	E26	-0.60
> 23	E27	13.31	*Bad*
> 24	E28	-1.03
> 25	E29	0.45
> 26	E30	-0.72
> 27	E31	-0.86
> 28	E32	4.64
> 29	E33	-0.48
> 30	E34	-0.51
> 31	E35	-0.49
> 32	E36	-0.44
> 33	E37	-0.02
> 34	E38	-1.36
> 35	E39	-1.04
> 36	E40	-1.05
> 37	E41	-0.37
> 38	E42	0.07
> 39	E43	-0.65
> 40	E44	-0.88
> 41	E45	-0.73
> 42	E46	-0.99
> 43	E47	-0.36
> 44	E48	5.79	*Bad*
> 45	E49	-1.19
> 46	E50	-1.09
> 47	E51	-0.46
> 48	E52	-0.14
> 49	E53	-0.22
> 50	E54	0.01
> 51	E55	-0.21
> 52	E56	-0.33
> 53	E58	0.04
> 54	E59	-0.18
> 55	E60	-0.17
> 56	E61	-0.22
> 57	E62	-0.26
> 58	E63	-1.17
> 59	E64	-1.23
> 60	E65	0.10
> 61	E66	-0.71
> 62	E67	-0.05
> 63	E68	-0.91
> 64	E69	0.09
> 65	E70	-0.47
> 66	E71	-0.20
> 67	E72	-0.46
> 68	E73	-0.15
> 69	E74	0.67
> 70	E75	-0.31
> 71	E76	0.07
> 72	E77	-0.31
> 73	E78	0.07
> 74	E79	-0.10
> 75	E80	-0.21
> 76	E81	1.45
> 77	E82	3.49
> 78	E83	-0.18
> 79	E84	-0.38
> 80	E85	0.10
> 81	E86	0.25
> 82	E87	-0.06
> 83	E88	-0.90
> 84	E89	0.09
> 85	E90	0.16
> 86	E91	0.11
> 87	E92	0.16
> 88	E93	-0.03
> 89	E94	0.92
> 90	E95	-0.41
> 91	E96	0.31
> 92	E97	0.13
> 93	E98	0.12
> 94	E99	-1.40
> 95	E101	0.76
> 96	E102	0.19
> 97	E103	-0.18
> 98	E104	18.00	*Bad*
> 99	E105	-0.31
> 100	E106	-0.37
> 101	E107	-1.16
> 102	E108	-0.46
> 103	E109	-0.26
> 104	E110	-1.24
> 105	E111	-0.85
> 106	E112	-0.72
> 107	E113	-1.15
> 108	E114	-0.68
> 109	E115	0.00
> 110	E116	-1.26
> 111	E117	-1.00
> 112	E118	0.52
> 113	E119	44.10	*Bad*
> 114	E120	0.75
> 115	E121	34.52	*Bad*
> 116	E122	1.97
> 117	E123	-0.66
> 118	E124	-1.34
> 119	Cz	-0.35
> Removing 10 channel(s)...
> 
> Regards,
> Sebastian
> 
> -----------
> Dr. Sebastian Sauppe
> Department of Comparative Linguistics, University of Zurich
> Homepage: https://sites.google.com/site/sauppes/ <https://sites.google.com/site/sauppes/>
> Twitter: @SebastianSauppe <https://twitter.com/SebastianSauppe>
> Google Scholar Citations: https://scholar.google.de/citations?user=wEtciKQAAAAJ <https://scholar.google.de/citations?user=wEtciKQAAAAJ> 
> ResearchGate: http://www.researchgate.net/profile/Sebastian_Sauppe <http://www.researchgate.net/profile/Sebastian_Sauppe>
> ORCID ID: http://orcid.org/0000-0001-8670-8197 <http://orcid.org/0000-0001-8670-8197>
> _______________________________________________
> Eeglablist page: http://sccn.ucsd.edu/eeglab/eeglabmail.html <http://sccn.ucsd.edu/eeglab/eeglabmail.html>
> 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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://sccn.ucsd.edu/pipermail/eeglablist/attachments/20180710/a293e0f6/attachment.html>


More information about the eeglablist mailing list