std selectICsByCluster

Jump to: navigation, search

Note: In this page I call 'cluster' in the sense of 'independent component clusters created by EEGLAB STUDY'. Also, IC stands for independent component.


Update (10/12/2017)

PVAF (i.e. percent variance accounted for; Note this PVAF is across time!), which is here normalized to be 1, is now computed for cluster-to-channel ERP projections. Thus it directly explains a scalp channel ERPs in relation to the projections from IC clusters. The results are shown in the command line (requested by Marco Petilli)


The main GUI is slightly changed to support 'reverse selection' i.e., reverse-select [3 7 9] is [1 2 4 5 6 8 10...]


The ERP mode now shows cluster-projections of ERPs as thin red lines. With 'within-a-cluster mean', the numbers of the overlaid line plots == the number of the selected clusters, and each line plots represents within-cluster mean across subjects.


With 'subjects x cluster', the numbers of the overlaid line plots == (the number of subjects) x (the number of the selected clusters). This shows across-subject differences.


What is std_selectICsByCluster

std_std_selectICsByCluster is recommended for

  • Quickly showing clusterICs-to-channel forward projection at the group level in the form of ERP and variance accounted.
  • Creating another set of .set files that have only ICs included in the selected cluster(s).

It comes with a powerful (for EEGLAB) interactive visualization tools too.

Note that the envelope plots and percent variance accounted for (PVAF) calculated here are different from those produced by std_envtopo(). The difference derives from that std_selectICsByCluster() computes envelopes and PVAF across subjects, while std_envtopo() computes them across clusters.

Note also that PVAF is subadditive, namely PVAF(a)+PVAF(b)+PVAF(c)>=PVAF(a+b+c) because (a+b+c) causes cancellation.

Why std_selectICsByCluster

As a visualization tool for the group-level source-to-channel forward projection

std_selectICsByCluster provides the quickest pathway to visualize the group-level IC clustering results forward projected to a single-channel ERP/variance accounted. std_selectICsByCluster() performs the following operations

  1. Identifies which ICs are included acorss the selected clusters (by using the admittedly 'apparently complex scheme' by the developer)
  2. Open each selected dataset, reject all ICs that are not included in the selected cluster(s).
  3. Compute ERP/variance accounted.
  4. Repeat above 2 and 3 for all the datasets.
  5. Compute the grand-average ERP/variance accounted across all datasets.
  6. Visualize the results.

As a group-level filter to manually exclude non-EEG ICs

One may use it as a group-level filter to generate another set of .set files that contains clean ICs only. First of all, creating STUDY itself cleans data since you can apply two powerful filters, namely

  1. To kick out ICs with dipoles located outside the brain
  2. To kick out ICs whose dipoles' residual variance is larger than a certain threshold (default 15%) This usually removes 70-80% of ICs.

But these automatic IC rejection is imperfect. You will see many artifact ICs in the final result. To perform further IC rejection, I recommend you use std_selectICsByCluster. See the instruction slides below (from EEGLAB workshop 2017 in Mysore)

Icrej1.png Icrej2.png Icrej3.png Icrej4.png

Note that the big red crosses on Slide 3 does not show up on GUI. Note that you must fill '[Option] Path for saving...' to generate .set files to create anther (final) STUDY.

The finally created super-clean datasets are perfect for SIFT (now all ICs are clean and usable!), Measure Projection (it does have eyeCatch to exclude EOG ICs, but does not have a solution to exclude EMG, so EMG ICs should be better removed beforehand), and so on.


Figure 1. std_backproj:Compute backprojection

Figure 2. std_backproj:Plot ERP results

Figure 3. std_backproj:Plot PVAF(percent variance accounted for)


I performed validation to make sure that nothing wrong should happen in figuring out the labyrinth of STUDY.

Materials and Methods

  1. Load a STUDY with 17 IC Clusters, select Cluster 3,9,14,17 for inclusion and 2,6 for exclusion, start forward projection. Save the new .set files with the selected ICs to the folder X.
  2. Show Fz ERP obtained from std_selectICsByCluster.
  3. Clear the STUDY. Next, load all the .set files from the folder X. Compute grand average of Fz ERP for comparison. Compare the two ERP plots in the figure below.

Figure 4. std_selectICsByCluster: The result compared with grand-average of the forward projected acorss all the subjects


  1. The effect of ascii conversion was in the order of 10^-9 (see the top plot below).
  2. The difference between the two results were in the order of 10^-4 (see the middle plot below).
  3. However, the main difference was in DC part that was 3.7853e-04. The difference in AC part was in the order of 10^-7 (see the bottom plot below_.
  4. The SNR in the AC part is at least 120dB (ERP wave ranges is about 1; AC difference in the order of 0.0000001)

Figure 5. std_backproj: validation results

Conclusion The method fulfills the precision in practice. I don't know exactly where the numerical difference in both DC and AC come from.

Authors: Makoto Miyakoshi. SCCN, INC, UCSD