[FieldTrip] Frequency shift after source reconstruction

Luca La Fisca 534843 at umons.ac.be
Wed May 27 09:33:58 CEST 2020


Dear community,

I'm Luca La Fisca, PhD student in Belgium and I'm validating the source
reconstruction algorithm using "ft_dipolesimulation".

After having performed a frequency analysis, I noticed the reconstructed
sources have twice the initial frequencies as shown in the following
figures (initial dipole frequencies = 10 and 85 Hz) :

Timelock:
[image: image.png]

Reconstructed sources:
[image: image.png]

Here is the code used to get the timelock signal:
fs = 2048;
fs_down = 512;

% generate EEG pseudo-signal
cfg      = [];
cfg.headmodel = vol;
cfg.elec = elec_aligned;
cfg.channel = elec_aligned.label(1:64);

cfg.dip.pos = [
   -1 65 36           % dipole left
   1 -62 43          % dipole right
   ];

unif_dip = 3^(1/2)/3;
cfg.dip.mom = ...
  [ unif_dip unif_dip unif_dip 0 0 0 ]' + ...
  [ 0 0 0 unif_dip unif_dip unif_dip ]';

event = ft_read_event(EEG_FILE);
event = event(3:end);
signal1 = zeros(length(eeg_data.trial));
signal2 = zeros(length(eeg_data.trial));
val = [event.value];
for s = drange([event(val==10).sample, event(val==11).sample,
event(val==12).sample])
    time = (0:ceil(fs*0.5))/fs;
    signal1(s:s+ceil(fs*0.5)) = 10*sin(10*time*2*pi);
    signal2(s:s+ceil(fs*0.5)) = 30*cos(85*time*2*pi);
end

cfg.dip.signal = {[signal1; signal2]};
cfg.fsample = fs;
raw1 = ft_dipolesimulation(cfg);

% Timelock analysis
% define trials
cfg = [];
cfg.dataset = EEG_FILE;
cfg.trialdef.eventtype  = 'STATUS';
cfg.trialdef.eventvalue = [10 11 12];
cfg.trialdef.prestim    = 0.5;
cfg.trialdef.poststim   = 1;
cfg = ft_definetrial(cfg);
data_trial = ft_redefinetrial(cfg, raw1);

% downsample
cfg = [];
cfg.resamplefs = fs_down;
data_trial = ft_resampledata(cfg,data_trial);

cfg = [];
timelock = ft_timelockanalysis(cfg, data_trial);


Here the code related to the source reconstruction:
% Estimating the leadfield
cfg = [];
cfg.sourcemodel = sourcemodel;    %% where are the sources?
cfg.headmodel   = vol;      %% how do currents spread?
cfg.elec        = elec_aligned; %% where are the sensors?
cfg.channel = elec_aligned.label(1:64);
sourcemodel_and_leadfield = ft_prepare_leadfield(cfg, timelock);

% Source reconstruction
cfg                     = [];
cfg.method              = 'mne';
cfg.sourcemodel         = sourcemodel_and_leadfield;        %the
precomputed leadfield
cfg.headmodel           = vol;                      %the head model
cfg.elec                = elec_aligned;             %the electrodes
cfg.channel             = elec_aligned.label(1:64); %the useful channels
cfg.mne.prewhiten       = 'yes';                    %prewhiten data
cfg.mne.lambda          = 0.01;                     %regularisation
parameter
cfg.mne.scalesourcecov  = 'yes';                %scaling the source
covariance matrix
minimum_norm_eeg        = ft_sourceanalysis(cfg,timelock);

Here the code to perform the frequency analysis:
tmp_pow = minimum_norm_eeg.avg.pow;
pow_fft = fft(tmp_pow'); %freq analysis of reconstructed sources
% pow_fft = fft(timelock.avg'); %freq analysis of timelock signal
% (un)comment depending on the desired one

L = length(timelock.avg);
f = fs_down*(0:(L/2))/L;

P2 = abs(pow_fft/L);
P1 = P2(1:L/2+1,:);
P1 = P1.*f';

figure()
plot(f,P1)
title('Single-Sided Amplitude Spectrum of Reconstructed Sources')
xlabel('f (Hz)')
ylabel('|P1(f)|')

Do you have any idea of what is responsible to this double frequency?
Do you think it is a general issue?
Is it a major issue leading to wrong analysis of the reconstructed signal
(e.g. connectivity analysis)?

I thank you in advance.

Best regards,

*Luca La Fisca*
*PhD Student*
Service d'Information, Signal et Intelligence Artificielle

Boulevard Dolez, 31

7000 Mons

+32 (0)65/37.40.83

*Luca.LAFISCA at umons.ac.be <Luca.LAFISCA at umons.ac.be>*




<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
Garanti
sans virus. www.avast.com
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20200527/c1d6bdbc/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 99182 bytes
Desc: not available
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20200527/c1d6bdbc/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 99627 bytes
Desc: not available
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20200527/c1d6bdbc/attachment-0003.png>


More information about the fieldtrip mailing list