<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">Dear all,<br></div><div>I am working on EEG source localization of a very simple fist clenching task (right hand, 10 seconds of contraction alternated to 10 seconds of relaxation to be used as contrast condition) using DICS beamformer (frequency 10 Hz). I have the individial MRI and EEG electrode positions of my participants, so I wrote a script to create the individual forward model following the tutorials on the fieldtrip webpage and some useful discussions on the mailing list. Below I report the full code used for the forward model and the code used for the source analysis. Attached, you  find the  results of the source localization and <div class="gmail_default" style="font-family:verdana,sans-serif;display:inline">​some ​</div>figures of different steps in the computation of the forward model.<br><br>According
 to my task, I expect to identify a desynchronization on the left motor 
cortex, but what I am getting are very weird results(see attachment<div class="gmail_default" style="font-family:verdana,sans-serif;display:inline">​s)​</div>.  I tryed to
 use the standard MRI in template\headmodel\standard_mri, and I get similar results.<br><br><div class="gmail_default" style="font-family:verdana,sans-serif">After
 a full day of self-debugging, I managed to get the result I expect 
(attached) using the method "concentricspheres" instead of "bemcp" in 
the computation of the head model, both with the MRI of my participants 
and with the standard MRI.<br><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">I
 assume there must be something wrong with "bemcp", also becasue when I 
use the standard bem headmodel (template\headmodel\standard_bem) created
 with the method "dipoli", everything looks fine again.<br><br></div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div>Did anybody experienced a similar issue before? Is there anything wrong I am doing in the pipeline? <br><br><div class="gmail_default" style="font-family:verdana,sans-serif">Thanks a lot in advace for your support!<br></div><div class="gmail_default" style="font-family:verdana,sans-serif">Best,<br></div><div class="gmail_default" style="font-family:verdana,sans-serif">Debora<br></div><br><br><div class="gmail_default" style="font-family:verdana,sans-serif">Fieldtrip version: 20150828<br></div><div class="gmail_default" style="font-family:verdana,sans-serif">Matlab version: R2015a (64 bit)<br></div><div class="gmail_default" style="font-family:verdana,sans-serif">OS: Windows 8 (64 bit)<br><br></div><br><br>%%%% --------------------- Code for  Forward Model ---------------- %%%<br><br><br>%% Read  MRI data (DICOM)<br>mri = ft_read_mri(experiment.mri); % experiment.mri contains the path to individual MRIs<br><br>%% Convert anatomical MRI to MNI coordinate system (= RAS)<br><br>cfg = [];<br>cfg.method = 'interactive';<br>cfg.coordsys = 'spm'; % MNI coordinate system (=RAS)<br>cfg.viewmode = 'ortho';<br>mri_spm = ft_volumerealign(cfg,mri);<br><br>%% Re-slice the MRI volume so that all the 3 dimensions have the same number of voxels<br><br>cfg = [];  <br>cfg.resolution = 1; % 1 mm thick slices<br>cfg.dim = [256 256 256];<br><br>mri_spm = ft_volumereslice(cfg,mri_spm);<br><br>%% Visualize MRI data to check that everything is ok<br><br>cfg = [];<br>cfg.method = 'ortho';<br>ft_sourceplot(cfg,mri_spm)<br><br>%% Segment the anatomical data<br><br>cfg = [];<br>cfg.output = {'brain' 'skull' 'scalp'};<br>cfg.brainsmooth = 2;<br>cfg.brainthreshold = 0.25;<br>cfg.scalpthreshold = 0.025;<br>mri_seg    = ft_volumesegment(cfg, mri_spm);<br><br>%% Check segmentation brain<br>cfg = [];<br>cfg.method = 'ortho';<br>cfg.funparameter = 'brain'; <br>ft_sourceplot(cfg,mri_seg)<br><br>%% Check segmentation skull<br>cfg = [];<br>cfg.method = 'ortho';<br>cfg.funparameter = 'skull'; <br>ft_sourceplot(cfg,mri_seg)<br><br>%% Check segmentation scalp<br>cfg = [];<br>cfg.method = 'ortho';<br>cfg.funparameter = 'scalp'; <br>ft_sourceplot(cfg,mri_seg)<br><br><br>%% Prepare mesh: creates surfaces at the boarders of the different tissue-types <br>cfg = [];<br>cfg.method = 'projectmesh';<br>cfg.tissue = {'brain' 'skull' 'scalp'};<br>cfg.numvertices = [6000 4000 2000];<br>bnd = ft_prepare_mesh(cfg, mri_seg);<br><br>%% Visualize surfaces<br>figure<br>ft_plot_mesh(bnd(1),'facecolor','none') % brain<br>figure<br>ft_plot_mesh(bnd(2),'facecolor','none') % skull<br>figure<br>ft_plot_mesh(bnd(3),'facecolor','none') % scalp<br><br>%% Visualize full mesh<br>figure<br>ft_plot_mesh(bnd(3), 'facecolor',[0.2 0.2 0.2], 'facealpha', 0.3, 'edgecolor', [1 1 1], 'edgealpha', 0.05);<br>hold on;<br>ft_plot_mesh(bnd(2),'edgecolor','none','facealpha',0.4);<br>hold on;<br>ft_plot_mesh(bnd(1),'edgecolor','none','facecolor',[0.4 0.6 0.4]);<br><br><br>%% Prepare head model (volume conduction model)<br>cfg = [];<br>cfg.method = 'bemcp';<br>headmodel = ft_prepare_headmodel(cfg,bnd);<br><br><br>%% % --------------------- Align the EEG electrodes!!!-------------------%%%<br><br>%% (1) Read electrode position from Localizer file<br><br>elec = ft_read_sens(experiment.electrodes); % experiment.electrodes contains the path to the individual electrode positions<br><br><br><br>%% (2) Check if alignment is necessary<br><br>figure<br>%plot scalp<br>ft_plot_mesh(headmodel.bnd(3),'edgecolor','none','facealpha',0.8,'facecolor',[0.6 0.6 0.8])<br>hold on<br>% plot electrodes<br>ft_plot_sens(elec,'style','sk')<br><br><br>%% (3) If the electrodes are not aligned to the head surface, interactively align them <br><br>cfg = [];<br>cfg.method = 'interactive';<br>cfg.elec = elec;<br><br>cfg.headshape = headmodel.bnd(3); % scalp<br>elec_aligned = ft_electroderealign(cfg);<br><br><br>%%  Load hdr and order elec_aligned accordign to original order of signal acquisition<br>%%% This is necessary because the eeg elctrod eposition shave been acquired<br>%%% in a different order with respect to theorder of the signal recording<br><br>load([experiment.path '\Data'],'hdr') % hdr contains some information about the original order of the channels and so on...<br><br> [~, original_order] = ismember(hdr.elec.label,elec_aligned.label);<br> <br> <br>elec_aligned.chanpos = elec_aligned.chanpos(original_order,:);<br>elec_aligned.elecpos = elec_aligned.elecpos(original_order,:);<br>elec_aligned.label = elec_aligned.label(original_order);<br><br>%% Check if the alignment is ok<br><br>figure<br>%plot scalp<br>ft_plot_mesh(headmodel.bnd(3),'edgecolor','none','facealpha',0.8,'facecolor',[0.6 0.6 0.8])<br>hold on<br>% plot electrodes<br>ft_plot_sens(elec_aligned,'style','sk')<br><br><br><br>%% -------------------------------- Source model -------------------------%%<br><br>%% Make the individual subject's grid<br><br><br>cfg = [];<br>cfg.grid.warpmni = 'yes';<br>cfg.resolution = 6; % resolution of the template grid in mm<br>cfg.grid.nonlinear = 'yes'; % use non linear normalization<br>cfg.mri = mri_spm; % use subject's mri in mni coordinates<br>cfg.grid.unit = 'mm';<br>sourcemodel = ft_prepare_sourcemodel(cfg);<br><br><br>%% Plot the single subject'e head model and grid positions<br><br>figure<br>hold on<br>ft_plot_vol(headmodel,'edgecolor','none','facealpha',0.3);<br>ft_plot_mesh(sourcemodel.pos(sourcemodel.inside,:));<br><br>%% Double check that source model is aligned to the segmented volume and to the electrodes<br>figure<br>hold on<br>plot3(sourcemodel.pos(sourcemodel.inside,1),sourcemodel.pos(sourcemodel.inside,2),sourcemodel.pos(sourcemodel.inside,3),'.');<br>ft_plot_vol(headmodel,'facecolor','brain','edgecolor','none','facealpha',0.3);<br>ft_plot_sens(elec_aligned,'label','label','style','y*','Markersize',10);<br><br><br>%% ----------------------  FORWARD SOLUTION ------------------------ %%<br><br><br>%% Prepare leadfield<br><br>cfg = [];<br>cfg.elec = elec_aligned;<br>cfg.grid = sourcemodel;<br>cfg.headmodel = headmodel;<br>leadfield = ft_prepare_leadfield(cfg);<br><br><br>%% Test sourc elocalization<br><br><br><br> load([experiment.path '\DATA'], 'preexperiment_freqsource') <br> <br> % preexperiment_freqsource contains the output of ft_freqanalysis<br>   <br>        cfg                    = [];<br>        cfg.elec               = elec_aligned;<br>        cfg.method             = 'dics';<br>        cfg.frequency          = 10;<br>        cfg.grid               = leadfield;<br>        cfg.headmodel          = headmodel;<br>        cfg.dics.keepfilter    = 'yes';<br>        cfg.dics.lambda       = '10%';<br>        src                    = ft_sourceanalysis(cfg, preexperiment_freqsource);<br>        filter                 = src.avg.filter;<br>        <br>        <br>        markers = [224 192]; % markers are some number in the trialinfo, 224 is related to fist clenching, 192 to relaxation <br>        for mm = 1:length(markers)<br>            <br>           cfg = [];<br>           cfg.trials = find(preexperiment_freqsource.trialinfo == markers(mm));<br>           data = ft_selectdata(cfg,preexperiment_freqsource);<br><br>            %%% DICS<br>            cfg                    = [];<br>            cfg.elec               = elec_aligned;<br>            cfg.method             = 'dics';<br>            cfg.frequency          = 10;<br>            cfg.grid               = leadfield;<br>            cfg.headmodel          = headmodel;<br>            cfg.dics.projectnoise  = 'yes';<br>            cfg.dics.lambda       = '10%';<br>            cfg.grid.filter        = filter;<br>            Source{mm}            = ft_sourceanalysis(cfg, data);<br>            <br>        end<br> <br><br> %% Interpolate results to anatomy<br><br>    source = Source{1};<br>    source1 = Source{1}; %clenching<br>    source2 =  Source{2}; % release<br>    source.avg.cont = (source2.avg.pow./source1.avg.pow)-1;<br>    <br>    cfg = [];<br>    cfg.parameter         = 'cont';<br>    source               = ft_sourceinterpolate(cfg, source, mri_spm);<br><br><br><br> %% Plot surface<br>    <br>    cfg = [];<br>    cfg.method            = 'surface';<br>    cfg.funparameter      = 'cont';<br>    cfg.funcolormap = 'jet';<br>    ft_sourceplot(cfg, source)<br>    <br><br><font face="verdana,sans-serif">--------------------------------------------------------------------<br><br>Debora Desideri</font><font face="verdana,sans-serif">, PhD Student<br></font></div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div><div><div><div><font face="verdana,sans-serif">BNP Lab - Neurology Department<br></font></div><font face="verdana,sans-serif">University Hospital Tübingen<br></font></div><font face="verdana,sans-serif">Eberhard Karls University Tübingen<br></font></div><font face="verdana,sans-serif">Hoppe-Seyler Str. 3<br></font></div><font face="verdana,sans-serif">D-72076 Tübingen<br></font></div><font face="verdana,sans-serif">Tel: +49 7071/29 80478<br></font><div><div><div><font face="verdana,sans-serif"><br></font></div></div></div></div></div></div></div>
</div>