[Eeglablist] Large Unexplained Differences in Power Values

Naomi Heffer nrh31 at bath.ac.uk
Wed Mar 10 05:43:57 PST 2021

Hi Clement,

Yes, I was comparing 'EEG' and 'clean' in my code.

I used all of the defaults for clean_artifacts except I turned the channel criterion off - thank you for highlighting that this means I will have high-pass filtered the data twice. I have now corrected my code so I only filter the data once but this doesn't seem to make much difference to the absolute power values.

The output I get to the command line when I run clean_artifacts seems to suggest that no channels are removed and that a large amount of the data had to be cleaned, but most was ultimately retained:

Keeping 54.5% (205 seconds) of the data.
eeg_insertbound(): 27 boundary (break) events added.
eeg_insertbound(): 27 boundary (break) events added.
Estimating calibration statistics; this may take a while...
Determining per-component thresholds...done.
Now cleaning data in 13 blocks.............
Now doing final post-cleanup of the output.
Determining time window rejection thresholds...done.
Keeping 96.5% (364 seconds) of the data.
eeg_insertbound(): 10 boundary (break) events added.
eeg_insertbound(): 10 boundary (break) events added.

Looking at the plot from vis_artifacts suggests that the cleaning has removed some very noisy sections with large amplitude changes. Do you think this is enough to be causing the 10^3 difference in magnitude in the obtained power values?

Many thanks,


From: Clement Lee <cll008 at eng.ucsd.edu>
Sent: 09 March 2021 17:47
To: Naomi Heffer <nrh31 at bath.ac.uk>
Cc: eeglablist at sccn.ucsd.edu
Subject: Re: [Eeglablist] Large Unexplained Differences in Power Values

CAUTION:  This email came from outside of the University. To keep your account safe, only click on links and open attachments if you know the person who sent the email, or you expected to receive this communication.

Hi Naomi,

Are you comparing the power between 'EEG' and 'clean' in your code? What arguments did you use for clean_artifacts (are you using default settings thereby high pass filtering the data twice?) and what does the output in the command line look like (e.g. how many channels or data points removed). Does the vis_artifact step give you any insight on this power difference?

Clement Lee
Applications Programmer
Swartz Center for Computational Neuroscience
Institute for Neural Computation, UC San Diego

On Tue, Mar 9, 2021 at 9:13 AM Naomi Heffer <nrh31 at bath.ac.uk<mailto:nrh31 at bath.ac.uk>> wrote:
Hi there,

I have been trying to calculate power in different frequency bands but I find that whether or not I clean the data using clean_artifacts before running the analysis has a very large impact on the magnitude of the power values.

Here is my code below, along with the absolute power values in each of the frequency bands when (a) I clean the data before running the analysis and (b) I don't use the clean_artifacts function to clean the data. Do you have any idea why I am seeing such massive differences in magnitude? And can you suggest which of the two sets of values is likely to be more realistic?

Many thanks


%% 1. Opening & Importing to EEGLAB
        % Get data from .easy to EEGLAB .set/.fdt format

        EEG = pop_easy(filename, 1, 0,[]);

         % Setting the right channel locations. Reading montage file
          EEG = pop_chanedit(EEG, 'load',config,'save','mychans.loc');

 %% 2. Filtering

        % Filter data between 0.1 and 40Hz
        % High-pass filter
         EEG = pop_eegfiltnew(EEG, 0.5,[], 1690, 0, [], 0);
       % Low-pass filter
         EEG = pop_eegfiltnew(EEG, [], 35, 86, 0, [], 0);

 %% 3.Cleaning of continuous data

       clean = clean_artifacts(EEG, 'ChannelCriterion', 'off');
      vis_artifacts(clean, EEG)

%% 4. Spectral Analysis

[spectra,freqs] = spectopo(EEG.data(:,:,:), 0, EEG.srate, 'freqrange', [1 80], 'plotmean', 'on', 'overlap', 250);

% delta=1-4, theta=4-8, alpha=8-13, beta=13-30, gamma=30-80
deltaIdx = find(freqs>1 & freqs<4);
thetaIdx = find(freqs>4 & freqs<8);
alphaIdx = find(freqs>8 & freqs<13);
betaIdx  = find(freqs>13 & freqs<30);
gammaIdx = find(freqs>30 & freqs<80);

% compute absolute power
deltaPower = mean(10.^(spectra(deltaIdx)/10))
thetaPower = mean(10.^(spectra(thetaIdx)/10))
alphaPower = mean(10.^(spectra(alphaIdx)/10))
betaPower  = mean(10.^(spectra(betaIdx)/10))
gammaPower = mean(10.^(spectra(gammaIdx)/10))

  1.  Values with cleaning:
deltaPower =    3.2846
thetaPower =    2.4440
alphaPower =    8.9593
betaPower =    6.9579
gammaPower =    3.3659

  1.  Values without cleaning:
deltaPower =    1.5560e+03
thetaPower =   1.3541e+03
alphaPower =   2.7626e+03
betaPower =   1.0275e+03
gammaPower =   97.3422

Eeglablist page: http://sccn.ucsd.edu/eeglab/eeglabmail.html<https://urldefense.com/v3/__https://eur01.safelinks.protection.outlook.com/?url=http*3A*2F*2Fsccn.ucsd.edu*2Feeglab*2Feeglabmail.html&data=04*7C01*7Cnrh31*40bath.ac.uk*7C1824263b754245fe85dc08d8e323713c*7C377e3d224ea1422db0ad8fcc89406b9e*7C0*7C0*7C637509088666717196*7CUnknown*7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0*3D*7C1000&sdata=iAv9y5*2Fiw4qJXap8eAyQ9LLMEzO2g1rnutx8RDMkkRg*3D&reserved=0__;JSUlJSUlJSUlJSUlJSUlJSUlJQ!!Mih3wA!WTzuiGz0Gq5eIdQ4N8IfWwwfwK1mP-h8c1agVR0aVNY1M_HuBjr2VS7HRu3vE68_t60yGA$ >
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>

More information about the eeglablist mailing list