[FieldTrip] Extracting virtual EEG channel from a patch

Julian Keil julian.keil at gmail.com
Mon Dec 7 17:57:10 CET 2015


Hi Parinaz,

> My problem is how I should use the output of volumelookup here for cfg.grid.xgrid, cfg.grid.ygrid and cfg.grid.zgrid.

You don't. You compute your virtual channels for a regular grid (something like -20:1:20 for x,y and z) and select the virtual channels in your ROI in a second step.
This might be a bit of an overkill, as you don't use most of your channels later on, but maybe you want to extend your analysis to other cortical areas - you never know.

Anyways, to be more clear: You compute your virtual electrodes on a predefined grid. To find your ROI, you use ft_volumelookup to get a binary matrix which tells you, which voxels of the standard MRI are in your ROI. Then you build a high-resolution grid based on the standard MRI (It's important to use one grid point per voxel). Using pythagoras, you can now find the closest high-resolution grid points for each of your virtual electrodes. As soon as you have these, you can see which of them have a value of 1 in your binary matrix of ft_volumelookup. Now you know which virtual electrodes are inside your ROI.

So for example, you have 2000 virtual electrodes on a -20:1:20 regular grid. You then compute a binary matrix and a high-resolution grid based on the standard MRI resulting in ~900000 grid points on a 91x109x91 grid. Using pythagoras, you find that grid point 6000 is closest to virtual electrode #1. Then you can see if element 6000 from your binary matrix is a 1. If so, your virtual electrode #1 is in your ROI, if not, your virtual electrode is not in your ROI.

> How I can find the atlas position to this maximum point in my code

Do you want to have the coordinates or the actual label? A while ago, I hacked the ft_sourceplot-function to give me the coordinate position as an output, but I can't find the code anymore. I'm sure you can edit the function to also output the label, as this has to be included as a text element somewhere in the function. But please be aware that editing the FT-functions can severely compromise the functionality.

Good luck,

Julian



Am 07.12.2015 um 12:52 schrieb Babaeeghazvini, P.:

> Hi Julian,
> 
> Thank you very much for your kind reply. Yes I want to compute virtual channel from an atlas area like whole Precentral_L (not from one voxel in this area). So your second explanation helps me. If I understood correctly in the code below I should use all grid points belong to atlas:
> 
> cfg = []
> 
> cfg.atlas = atlas;
> 
> cfg.roi = atlas.tissuelabel(1)
> 
> cfg.inputcoord = 'mni';
> 
> mas = ft_volumelookup(cfg,grid);
> 
> cfg              = [];
> cfg.method       = 'lcmv';
> cfg.vol          = hdm;
> cfg.grid.xgrid      =
> 
> cfg.grid.ygrid      =
> 
> cfg.grid.zgrid      =
> 
> cfg.grid.inside  = 1:size(cfg.grid.pos, 1);
> cfg.grid.outside = [];
> cfg.keepfilter   = 'yes';
> source_idx       = ft_sourceanalysis(cfg, tlock);
> 
> My problem is how I should use the output of volumelookup here for cfg.grid.xgrid, cfg.grid.ygrid and cfg.grid.zgrid.
> 
> an other question that I have is that: when I compute the maximum index from
>  [maxvalr, maxpowindxr] = max(srcetask.avg.pow)
> 
> How I can find the atlas position to this maximum point in my code (I can see this atlas label in the figure that I get from sourceplot, but I want to report this label in matlab)
> 
> Regards,
> Parinaz.
> 
> 
> 
> 
> From: fieldtrip-bounces at science.ru.nl [fieldtrip-bounces at science.ru.nl] on behalf of Julian Keil [julian.keil at gmail.com]
> Sent: Monday, December 07, 2015 9:30 AM
> To: FieldTrip discussion list
> Subject: Re: [FieldTrip] Extracting virtual EEG channel from a patch
> 
> Hi Parinaz,
> 
> I'm not sure if I understood your question correctly.
> Do you want to find the atlas label to a given virtual channel? Or do you want to compute a virtual channel on a given atlas label?
> 
> In the first case, you can simply interpolate your virtual EEG channels to the standard MRI and use source plot with an atlas to find the corresponding label.
> In the second case, it's a tad more complicated, but here's how I do it:
> 1. Compute the virtual channels for all grid points in the cortex
> 2. If you have computed the virtual channels on an individual MRI, make sure that the positions correspond to the standard MRI (I think that's described in the source analysis-tutorial)
> 3. Build a high-resolution 3D-Grid on the standard MRI
> 4. Select all grid points from the grid of step 3 which belong to an atlas (see ft_volumelookup)
> 5. Use pythagoras to find the virtual channels from step 2 closest to the grid points from step 4.
> 
> I hope this helps, let me know otherwise.
> 
> Julian
> 
> Am 04.12.2015 um 20:14 schrieb Babaeeghazvini, P.:
> 
>> Hello
>> 
>> I want to reconstruct a source signal the same as below in page  http://www.fieldtriptoolbox.org/tutorial/shared/virtual_sensors
>> cfg              = [];
>> cfg.method       = 'lcmv';
>> cfg.vol          = hdm;
>> cfg.grid.pos     = sourcemodel.pos([maxcohindx maxpowindx], :);
>> cfg.grid.inside  = 1:size(cfg.grid.pos, 1);
>> cfg.grid.outside = [];
>> cfg.keepfilter   = 'yes';
>> source_idx       = ft_sourceanalysis(cfg, tlock);
>> Not from the voxel indicating maximum power ([maxval,
>>  maxpowindx] = max(source_diff.avg.pow);), but from the atlas area which this voxel belongs to, such as Supp_Motor_Area_L. So my question is: How I can get the atlas range and atlas label belong to a voxel, and how I can use this atlas area range in this code to reconstruct a signal instead of using (cfg.grid.pos
>>  = sourcemodel.pos([maxcohindx maxpowindx], :)).
>> 
>> Regards,
>> Parinaz.
>> _______________________________________________
>> 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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20151207/9e1381bf/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 495 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://mailman.science.ru.nl/pipermail/fieldtrip/attachments/20151207/9e1381bf/attachment-0001.sig>


More information about the fieldtrip mailing list