[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