[FieldTrip] Magnitude of source voltages appear to be too large

Prasad Tendolkar - Research Engineer II PTendolkar at kesslerfoundation.org
Fri May 26 18:47:50 CEST 2023


Hello,

I have obtained the voltage time series of cortical sources using the fieldtrip lcmv method for source reconstruction. I am concerned that the source voltage amplitudes are too large to be physiologically possible. After ensuring that input EEG dataset is in units of volts, I get source voltage amplitudes with root-mean-square voltage values ranging from 0.2799 to 0.8739 Volts. Does that seem reasonable? The EEG data is recorded during a walking task with no external stimulation.

The voltages time series from the source locations are obtained using the following code, "eegData" is the eeglab-preprocessed data converted to a fieldtrip raw datatype, and "roiData" contains the voltage time series of the source locations that I calculated the rms from:

tempElec = ft_read_sens(electrodePos); %electrodePos is the standard_1020.elc from fieldtrip

newElec = tempElec;

for i = 1:length(eegData.label)
    checker = 0;
    for i2 = 1:length(tempElec.label)
        if strcmpi(eegData.label{i},tempElec.label{i2})
            checker = 1;
            newElec.chanpos(i,:) = tempElec.chanpos(i2,:);
            newElec.chantype{i} = tempElec.chantype{i2};
            newElec.chanunit{i} = tempElec.chanunit{i2};
           newElec.elecpos(i,:) = tempElec.elecpos(i2,:);
            newElec.label{i} = tempElec.label{i2};

        end
    end
    if checker == 0
        eegData.elec.label{i}
    end
end

newElec.chanpos(length(eegData.label)+1:end,:) = [];
newElec.chantype(length(eegData.label)+1:end) = [];
newElec.chanunit(length(eegData.label)+1:end) = [];
newElec.elecpos(length(eegData.label)+1:end,:) = [];
newElec.label(length(eegData.label)+1:end) = [];

eegData.elec = newElec;

%% Project electrodes to scalp, headmodel is standard_bem.mat from fieldtrip
if strcmp(headmodel.type, 'bemcp')
    scalp_index = 3;
elseif strcmp(headmodel.type, 'dipoli')
    scalp_index = 1;
end

cfg = [];
cfg.method = 'project'; % onto scalp surface
cfg.headshape = headmodel.bnd(scalp_index); % scalp surface
eegData.elec = ft_electroderealign(cfg, eegData.elec);


cfg = [];
cfg.headmodel = headmodel;
cfg.elec = eegData.elec;
cfg.grid.resolution = 4;
cfg.grid.unit       = 'mm';
cfg.channel = 'all';
grid = ft_prepare_leadfield(cfg);

cfg = [];
cfg.covariance = 'yes';
cfg.covariancewindow = 'all';
timelock_allexp = ft_timelockanalysis(cfg, eegData);

cfg = [];
cfg.covariance = 'yes';
cfg.covariancewindow = 'all';
cfg.keeptrials  = 'yes';
timelock_allexp_all = ft_timelockanalysis(cfg, eegData);

%General source localisation
cfg = [];
cfg.headmodel = vol;
cfg.elec = timelock_allexp.elec;
cfg.grid = grid;
cfg.method = 'lcmv';
cfg.lcmv.fixedori = 'yes';  %Project onto largest variance orientation
cfg.lcmv.keepfilter = 'yes'; %Keep the beamformer weights
cfg.lcmv.lambda = '5%'; %Regularise a little
source_allexp = ft_sourceanalysis(cfg, timelock_allexp);

cfg = [];
cfg.method        = 'nearest';
cfg.parameter = 'tissue';
grid2 = ft_sourceinterpolate(cfg,atlas,grid);  % atlas is a modified version of the AAL atlas provided in fieldtrip with our ROIs
grid2.tissue = fix(grid2.tissue);
grid2.tissuelabel = atlas.tissuelabel;

cfg = [];
cfg.parcellation = 'tissue';
cfg.method = 'svd';
roiData = ft_virtualchannel(cfg,timelock_allexp_all,source_allexp,grid2);

Is there any step that I may have overlooked? Any troubleshooting suggestions would be greatly appreciated


Thanks,
Prasad

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20230526/a8c29b0f/attachment.htm>


More information about the fieldtrip mailing list