[Eeglablist] ICA component back-projection EEG channel data scaling issue

안민희 tigoum at gmail.com
Sun Jan 16 23:23:07 PST 2022


Dear Mr. Makoto.

The site that you revealed and explained.
https://sccn.ucsd.edu/wiki/Makoto%27s_useful_EEGLAB_code#How_to_avoid_the_effect_of_rank-deficiency_in_applying_ICA_.2803.2F31.2F2021_added.29
In
I applied it to my data referring to the source code.

I used pop_runica() to obtain IC components for my EEG continuous data (32
channels).
After rejecting bad components from these all, only the remaining good
components were collected and pop_subcomp() was called to obtain refined
EEG continuous data again.
I think maybe inside pop_subcomp():

compproj = EEG.icawinv(:, component_keep)*eeg_getdatact(EEG, 'component',
component_keep, 'reshape', '2d');

The above code seems to back-project IC components activations and inverse
them back to the original EEG continuous channels data.

If you look at the results of applying my data below:

K>> EEG.data(1:4, 1:8)
ans =
4×8 single matrix

-4.0446 -3.2863 -1.9727 -3.1197 -0.7910 -0.3019 -2.7926 -4.5642
-2.8579 -4.3348 -5.2715 -13.8260 -12.2865 -8.4530 -5.9170 2.8110
-7.5061 -6.4850 -9.1758 -9.9551 -8.1695 -7.1901 -10.2777 -13.3289
-1.5172 -3.0999 -4.5775 -5.6484 -2.7757 -2.9985 -7.8412 -3.0444


K>> compproj(1:4, 1:8)
ans =
4×8 single matrix

1.0e+06 *
-1.0263 -0.5103 1.1233 -0.3372 -0.7986 -4.6863 0.3389 0.4285
-0.8477 1.7648 1.6060 2.7392 7.8056 6.2160 6.8959 1.3960
0.6467 -1.2030 -3.8712 -3.0576 -2.1492 -3.8688 -3.0184 -1.1567
1.1130 -1.7316 -3.7933 -4.0585 -7.1571 -8.2685 -6.3729 -1.3185


Question: Normal EEG.data has a value range of -100 to 100 uV. However,
back-projected EEG obtained as a result of pop_subcomp().The data
(==compproj) value is 1.0e+06 * [-1.0264-0.5103...], which is a million
times larger than the original value.

from https://sccn.ucsd.edu/pipermail/eeglablist/2015/009515.html,
EEG.icaact (==ICA activities) is said to be scaled on RMS microvolt.

https://sccn.ucsd.edu/wiki/Makoto's_preprocessing_pipeline#RMS_option_issue_.2807.2F02.2F2020_added.29's
According to RMS option issue (07/02/2020 added),
"However, if you continue to process your data after ICA, the variables
including EEG.icaweights, EEG.icaspheres, EEG.icawinv, EEG.icaact are NOT
scaled to RMS."
And, in the link related to it,
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_sccn_eeglab_issues_172&d=DwIFaQ&c=-35OiAkTchMrZOngvJPOeA&r=kB5f6DjXkuOQpM1bq5OFA9kKiQyNm1p6x6e36h3EglE&m=loczbbOporB1joA4BuU1TidLHikDJi5HA03yyk_f0drTOkQJyfPgtslhH3WbsAd5&s=Tbx2flZ62yJyJUe2POgtqtCiy_JUAWeS7A_Zg7rWEXI&e= 
Here, the neuromechanist is,
"Original weights are conserved in EEG.etc. Substituting EEG.icaweights
with EEG.etc.icaweights_beforerms and EEG.It describes etc.icasphere matrix
with EEG.etc.icasphere_defaults."

Then, using the elements of EEG.etc.ica..., I'm not sure how to
back-project IC components activities to normal scale-level(in uV) EEG
continuous data.

In summary, I would like to back-project ICA activities to obtain normal uV
class EEG data. What should I do?

Thank you very much.
tigoum



More information about the eeglablist mailing list