[FieldTrip] Source localization

jan-mathijs schoffelen jan.schoffelen at donders.ru.nl
Tue Jan 22 09:49:16 CET 2013


Hi intersect(everyone, casper)

> Everyone,
> 
> While the whole script is way too convoluted to put up here, but luckily the relevant steps are quite simple
> Input is simply raw data, read with ft_preprocessing, which is passed through functions as shown in my previous email.
> 
> After passing the data to ft_sourcegrandaverage (only using cfg.outputfile), where the data is fed as a cell array (which seems to work properly), I go over to a source-comparison script. This script works as follows:
> First I create a pre-post contrast as shown in the beamformer tutorial.
> 
> Next, I read some MRI-data using ft_read_mri from a standard folder, and reslice this data:
> mri = ft_read_mri(strcat(h.subject,'Subject01.mri'));  
> mri = ft_volumereslice([], mri);
> 

> Then:
> [data] = ft_sourceinterpolate(cfg, data, mri);
> where cfg contains:
> cfg.parameter: 'avg.pow'
> cfg.downsample: 4
> 
> and I add the anatomy:
> data.anatomy = mri.anatomy; clear mri

Putting mri.anatomy into data.anatomy is probably not what you want to do: the whole point about ft_sourceinterpolate is to get the functional and anatomical data in the same 'pixel-space'; this is the only way that ft_sourceplot (as of yet) can deal with it. The reason is that now the functional data is sampled once every 4 voxels, relative to the anatomy. I guess that this causes your problem in ft_sourceplot.



Best wishes,

Jan-Mathijs



> And finally, I call ft_sourceplot using these options:
> cfg.parameter: 'avg.pow';
> cfg.downsample: 4

> with one of these three methods:
> 1) cfg.method = 'surface';
>     cfg.surffile = 'surface_l4_both.mat';
>     cfg.surfdownsample = 4;
>     cfg.projmethod = 'nearest';
> 2) cfg.method = 'ortho';
> 3) cfg.method = 'slice';
>     cfg.nslices = 20;
> Which leads to the errors shown earlier. At this point, disp(data) yields:
> K>> disp(data)
>          avg: [1x1 struct]
>          pos: [16777216x3 double]
>          dim: [256 256 256]
>       inside: [1x16777216 double]
>      outside: [1x0 double]
>     coordsys: 'ctf'
>         unit: 'mm'
>          cfg: [1x1 struct]
>      anatomy: [256x256x256 double]
> 
> I'm guessing it has something to do with the 'inside' and 'outside' elements, so my 'standard head model'. I think I made this using the following code:
> mri = ft_read_mri(strcat(h.subject,'Subject01.mri')); % load 'standard' anatomical model
> 
> % segment the template brain and construct a volume conduction model (i.e. head model)
> cfg             = [];
> cfg.output      = {'brain' 'scalp' 'skull'};
> cfg.downsample  = 2;
> t_seg    = ft_volumesegment(cfg, mri);
>  
> % create head model
> cfg          = [];
> cfg.method   = 'singlesphere';
> cfg.hdmfile  = strcat(h.subject,'Subject01.hdm');
> cfg.elec     = ft_read_sens('standard_1020.elc');
> t_vol = ft_prepare_headmodel(cfg, t_seg);
> clear template_seg
> 
> % construct the dipole grid in the template brain coordinates
> cfg = [];
> cfg.normalize = 'no'; % no normalization, since we're comparing two conditions THAT'S RIGHT I DID PAY ATTENTION
> cfg.vol        = t_vol;
> t_grid  = ft_prepare_sourcemodel(cfg);
> 
> After which I use this on all subjects, using this (note that I store all data in a single massive structure, to make saving to disk and selecting data etc. easier):
> source{subj}.(datasets{d}) = sourceanalysis(data, t_vol, t_grid);
> 
> Anyone seeing anything obviously stupid?
> 
> Sincerely,
> 
> Casper
> 
> 
> On Fri, Jan 18, 2013 at 4:43 PM, <Lilla.Magyari at mpi.nl> wrote:
> Hi Casper,
> 
> I think it is really difficult to figure only from the error message what
> the problem is. I think it would be also useful to see the inputs (cfg,
> and your data) of ft_sourceplot. Could you just send me how your cfg and
> your data-structure looks like? (I mean that you do not need to send the
> actual data, just the screen output of disp(data) and disp(cfg)).
> 
> Best,
> Lilla
> 
> 
> > Dear Fieldtrippers,
> >
> > I've asked this question earlier, but either it got lost due to technical
> > reasons, or the people who actually understand what's happening here were
> > on vacation, so here it is again:
> >
> > I've been trying to do a source analysis on a dataset with two conditions,
> > mostly following the tutorials and examples from the Fieldtrip site, and
> > come upon a problem; it won't plot. While the source analysis is not an
> > essential component of the analysis of this dataset (it's more along the
> > lines of "let's see if I can do this"), and I don't expect any result
> > other
> > than something like "there might be a source in the left hemisphere", I'd
> > still would like to found out why it's not working.
> >
> > Essentially, I create a standard headmodel cause I don't have individual
> > MRI's from the "Subject1.mri"-example, using ft_volumesegment,
> > ft_prepare_headmodel and ft_prepare_sourcemodel, and try to get Fieldtrip
> > to find sources based on individual EEG-datasets using ft_freqanalysis
> > (with cfg.method = 'mtmfft') and ft_sourceanalysis.
> > After that, I use ft_sourcegrandaverage to produce, well, a grand average
> > source, and feed this via ft_sourceinterpolate to ft_sourceplot.
> >
> > Now, ft_sourceplot has three plotting possibilities: slice, ortho, and
> > surface. Initially I tried to get the ortho-option to work, but this gave
> > the following error:
> > *Attempted to access dim(3); index out of bounds because numel(dim)=2.*
> > *Error in ==> cornerpoints at 11
> > *
> > *Error in ==> ft_plot_slice at 157
> > *
> >
> > So, I tried the surf-option, which gave me this:
> > *Undefined function or variable "val".*
> > *Error in ==> ft_sourceplot at 1174
> > *
> >
> > And finally, I tried the slice-option, which gave one of two errors (which
> > seems to be based on how many slices I requested):
> > *Out of memory*
> > Which is pretty damn impressive since I've got 8GB of RAM and a pagefile
> > topping of at 40GB
> > Or, the mildly disconcerting:
> > *Matlab has encountered an internal error and has to close*
> > Which seems to have been caused by a so-called *"Segmentation violation"
> > *
> >
> > Can anyone offer any insight in these errors? I think I'm doing something
> > wrong pretty early on, but have no idea what it is.
> >
> > Sincerely,
> >
> > Casper van Heck
> >
> >
> > On Fri, Dec 21, 2012 at 1:43 PM, Casper van Heck
> > <caspervanheck at gmail.com>wrote:
> >
> >> Dear Fieldtrippers,
> >>
> >> I've been trying to do a source analysis on a dataset with two
> >> conditions,
> >> mostly following the tutorials and examples from the Fieldtrip site, and
> >> come upon a problem; it won't plot. While the source analysis is not an
> >> essential component of the analysis of this dataset (it's more along the
> >> lines of "let's see if I can do this"), and I don't expect any result
> >> other
> >> than something like "there might be a source in the left hemisphere",
> >> I'd
> >> still would like to found out why it's not working.
> >>
> >> Essentially, I create a standard headmodel cause I don't have individual
> >> MRI's from the "Subject1.mri"-example, using ft_volumesegment,
> >> ft_prepare_headmodel and ft_prepare_sourcemodel, and try to get
> >> Fieldtrip
> >> to find sources based on individual EEG-datasets using ft_freqanalysis
> >> (with cfg.method = 'mtmfft') and ft_sourceanalysis.
> >> After that, I use ft_sourcegrandaverage to produce, well, a grand
> >> average
> >> source, and feed this via ft_sourceinterpolate to ft_sourceplot.
> >>
> >> Now, ft_sourceplot has three plotting possibilities: slice, ortho, and
> >> surface. Initially I tried to get the ortho-option to work, but this
> >> gave
> >> the following error:
> >> *Attempted to access dim(3); index out of bounds because numel(dim)=2.*
> >> *Error in ==> cornerpoints at 11
> >> *
> >> *Error in ==> ft_plot_slice at 157
> >> *
> >>
> >> So, I tried the surf-option, which gave me this:
> >> *Undefined function or variable "val".*
> >> *Error in ==> ft_sourceplot at 1174
> >> *
> >>
> >> And finally, I tried the slice-option, which gave one of two errors
> >> (which
> >> seems to be based on how many slices I requested):
> >> *Out of memory*
> >> Which is pretty damn impressive since I've got 8GB of RAM and a pagefile
> >> topping of at 40GB
> >> Or, the mildly disconcerting:
> >> *Matlab has encountered an internal error and has to close*
> >> Which seems to have been caused by a so-called *"Segmentation violation"
> >> *
> >>
> >> Can anyone offer any insight in these errors? I think I'm doing
> >> something
> >> wrong pretty early on, but have no idea what it is.
> >>
> >> Sincerely,
> >>
> >> Casper van Heck
> >>
> > _______________________________________________
> > fieldtrip mailing list
> > fieldtrip at donders.ru.nl
> > http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
> 
> 
> _______________________________________________
> fieldtrip mailing list
> fieldtrip at donders.ru.nl
> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip
> 
> _______________________________________________
> fieldtrip mailing list
> fieldtrip at donders.ru.nl
> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip

Jan-Mathijs Schoffelen, MD PhD 

Donders Institute for Brain, Cognition and Behaviour, 
Centre for Cognitive Neuroimaging,
Radboud University Nijmegen, The Netherlands

Max Planck Institute for Psycholinguistics,
Nijmegen, The Netherlands

J.Schoffelen at donders.ru.nl
Telephone: +31-24-3614793

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20130122/88af00b1/attachment-0001.html>


More information about the fieldtrip mailing list