[FieldTrip] Multiple source inversion problems for group MNE analysis

Peter Goodin pgoodin at swin.edu.au
Thu May 1 07:30:41 CEST 2014


Hi Fieldtrip list,

I'm trying to do group source analysis using MNE but have run into a bit of a snag.

After running ft_sourceanalysis (data is 1600ms / 901 data points, source model has been made via SPM (8196 verticies), head model through segmentation of the individual's MRI - all looks to be aligned, similar to the output of SPM (see  and plots sensibly using ft_sourcemovie) I've tried running ft_sourceinterpolation using the data on an individual's MRI (freshly read in using ft_read_mri) or the SPM T1 template (also using ft_read_mri).

If using the individual's MRI (dimensions = 256 256 176), with or without downsampling, after an hour or so I get an out of memory error and that's that. Running it with the template works fine and is finished ~90 seconds. The results using ft_sourceplot (ortho method) however don't look right (see interp.jpg). Additionally there's no field in the interpolated's cfg about anatomy afterward.

So taking another route and just trying to use ft_sourcegrandaverage on the output of ft_sourcelocalisation I'm met with
"??? Error using ==> ft_sourcegrandaverage at 111
different grid locations in source reconstructions"

I have absolutely no idea what I'm doing wrong and would appreciate any help. An abridged version of the script I'm using for mass conversion to source space is below:


    sourcemodel = ft_read_headshape(gii_list(i,:)); <-- this is the ...2cortex_8196.surf.gii mesh from spm

    mri = ft_read_mri([structdir mri_list(i,1:end-2)]); <--- individual participant's raw MRI in nii form.

    cfg = [];
    cfg.coordsys = 'spm';
    cfg.output = {'brain'};
    seg = ft_volumesegment(cfg, mri);

    cfg = [];
    cfg.method = 'singleshell';
    conductionmodel = ft_prepare_headmodel(cfg, seg);

    conductionmodel = ft_convert_units(conductionmodel,'cm');
    conductionmodel = ft_convert_units(conductionmodel,'mm');


 %%Check everything's aligned correctly:

    figure;hold on;
    subplot(1,2,1), ft_plot_vol(conductionmodel, 'facecolor', [0 0 1]);alpha 0.5;
    ft_plot_mesh(sourcemodel, 'edgecolor', [0 1 0]); camlight
    ft_plot_sens(sens, 'style', 'r*');
    subplot(1,2,2), ft_plot_vol(conductionmodel, 'facecolor', [0 0 1]);alpha 0.5;
    ft_plot_mesh(sourcemodel, 'edgecolor', [0 1 0]); camlight
    ft_plot_sens(sens, 'style', 'r*'); view([90 0]);
    view([90 0])
    gcf;
    suptitle([gii_list(i,2:5) ' source model']);
    saveas(gcf, [gii_list(i,2:6) 'source model.tiff']);
    close(gcf);

    assignin('base', [gii_list(i,2:6) 'sourcemodel'], sourcemodel); <--- rename hold variable to participant number
    assignin('base', [gii_list(i,2:6) 'conductionmodel'], conductionmodel); <--- ditto

    save([gii_list(i,2:6) 'model'], [gii_list(i,2:6) 'sourcemodel'], [gii_list(i,2:6) 'conductionmodel'], '-v6');

%% CREATE LEADFIELD & LOCALISED DATA

    load(sens_data_list(i,:)); <--- Load sensor space condition data
    conds_list = (who('*nback*av'))  <--- Create participant specific list

    datcm = eval(conds_list{1,1});
    dat = datcm;
    dat.grad = ft_convert_units(datcm.grad, 'mm');

    %Leadfield goes here <--- Mostly taken from the tutorial

    cfg = [];
    cfg.grad = dat.grad; % sensor positions
    cfg.channel = 'MEG'; % the used channels
    cfg.grid.pos = sourcemodel.pnt; % source points <---Does this have something to do with the problem?
    cfg.grid.inside = 1:size(sourcemodel.pnt,1); % all source points are inside of the brain <--- Or this?
    cfg.vol = conductionmodel; % volume conduction model
    leadfield = ft_prepare_leadfield(cfg);

    assignin('base', [conds_list{1,1} '_leadfield'], leadfield);
    save([gii_list(i,2:6) 'model'], [conds_list{1,1} '_leadfield'], '-v6', '-append');

    clear dat;

    for k = 1:size(conds_list,1);
        disp('---');
        disp(['Creating source data for ' conds_list{k,1}]);
        disp('---');
        datcm = eval(conds_list{k,1});
        dat = datcm;
        dat.grad = ft_convert_units(datcm.grad, 'mm');

    %Inversion goes here  <--- Mostly taken from the tutorial
        cfg  = [];
        cfg.method = 'mne';
        cfg.grid = leadfield;
        cfg.vol = conductionmodel;
        cfg.mne.prewhiten = 'yes';
        cfg.mne.lambda = 3;
        cfg.mne.scalesourcecov = 'yes';
        sourcedat = ft_sourceanalysis(cfg,dat);

        assignin('base', [conds_list{k,1} '_source'], sourcedat);

        k = k + 1;
    end

%%General saving stuff

        a = who('*C_av_source');
        b = a(1:2:end,1);

        save([sourcedatadir gii_list(i,2:6) 'condep_conds'], char(b(1,1)), '-v6');

        for l = 2:size(b,1);
            save([sourcedatadir gii_list(i,2:6) 'condep_conds'], char(b(l,1)), '-append', '-v6');
            l = l + 1;
        end

       save([sourcedatadir gii_list(i,2:6) 'source'],  '*_source', '-v6');

Thanks again,

Peter

__________________________
Peter Goodin,
BSc (Hons), Ph.D Candidate.

Brain and Psychological Sciences Research Centre (BPsych)
Swinburne University,
Hawthorn, Vic, 3122
http://www.swinburne.edu.au/swinburneresearchers/index.php?fuseaction=profile&pid=4149

Monash Alfred Psychiatry Research Centre (MAPrc)
Level 4, 607 St Kilda Road,
Melbourne 3004
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140501/c440f173/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: interp.jpg
Type: image/jpeg
Size: 17514 bytes
Desc: interp.jpg
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140501/c440f173/attachment-0001.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: c112_source model.tiff
Type: image/tiff
Size: 233110 bytes
Desc: c112_source model.tiff
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20140501/c440f173/attachment-0001.tiff>


More information about the fieldtrip mailing list