<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Dear Erick, <br>
<br>
Thanks for your detailed reply.<br>
I've been using individual MNI-warped grids (point 4 below) and
I'm always using ft_convert_unit so those points are alright in my
data.<br>
<br>
The reason why I do need to interpolate (at least, I think I
need), is because I'm looking for max 'pow' in anatomically
defined regions given the afni atlas. I managed to get it to work
by interpolating to the mri and looking for max 'pow' given a
label (e.g., 'Middle Temporal Gyrus') using ft_volumelookup. <br>
Do you have any experience with this approach (searching within
anatomical labels) without having to interpolate?<br>
<br>
Thanks once more, Vitória<br>
<br>
<br>
<br>
On 3/11/2014 6:35 PM, Erick Ortiz wrote:<br>
</div>
<blockquote
cite="mid:CAHseZE-kiHmhGpsSyKjNQ4Z0fv1uUe+jzSsUmtKtFU-8Kzj2wA@mail.gmail.com"
type="cite">
<div dir="ltr">Dear Vitória and Cornelius,<br>
<br>
this is a common problem, and maybe it would be good to clarify
the strategies that can be used here. I hope this can help
others in a similar situation, which I have found many times.<br>
<br>
1) You are trying to convert voxel indexes to head (CTF)
coordinates. In this case, there are two mistakes in the code:<br>
1a) pos = warp_apply( pinv( sourceNAIInt.transform ), posInt,
'homogeneous' );<br>
... should be done with sourceNAIInt, not mri. The transforms
are different, in general; e.g. note the downsample=2.<br>
1b) use cfg.locationcoordinates = 'head', as commented by JM in
a previous post. Or remove this line, since 'head' is the
default.<br>
<br>
2) But if you are working with the same subject/grid, there is
no need for interpolation at all. Simply find the grid position
with highest 'pow' and take its position.<br>
[dummy,ind] = max(source.avg.pow);<br>
pos = source.pos(ind,:);<br>
<br>
3) However, this is not possible when using different grids,
e.g. in a grand average in MNI coordinates. Find the peak
('pos') in the interpolated volume, as in Cornelius' code, then
find the index of the nearest grid position for a common (again,
MNI) grid. This is also in JM's message.<br>
<br>
dpos = source.pos - repmat( pos, size(source.pos,1), 1 );<br>
[dummy,ind] = min(sum(dpos.^2,2));<br>
<br>
4) What I have been using, and strongly recommend, is an MNI
grid warped to the subject's anatomy, according to this
procedure:<br>
<a moz-do-not-send="true"
href="http://fieldtrip.fcdonders.nl/example/create_single-subject_grids_in_individual_head_space_that_are_all_aligned_in_mni_space">http://fieldtrip.fcdonders.nl/example/create_single-subject_grids_in_individual_head_space_that_are_all_aligned_in_mni_space</a><br>
<br>
This would give you both the benefits of working in MNI
coordinates, and the ease of having a common grid across
subjects (for instance, enabling solution #2). Still, some
projects do call for one of the other options.<br>
<br>
Just a couple of details:<br>
- Pay utmost attention to coordinate systems and units. For
instance, it is common to confuse unlabeled cm for mm, and
either of these with voxels. Try to also label all structures as
CTF or SPM (MNI).<br>
- Using pinv instead of inv is usually a good idea. Here, it is
a not an issue, but matrix inversion in MATLAB can lead to a
world of hurt to the unwary.<br>
<br>
Best,<br>
Erick<br>
<br>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">On Tue, Mar 11, 2014 at 4:04 PM,
Vitoria Piai <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:v.piai.research@gmail.com" target="_blank">v.piai.research@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Dear FT-ers, <br>
<br>
I found an old posting to the mailing list (see below)
that never got answered so my question still holds: given
a location I found in the interpolated source, how do I
find back the same location in .pos of the
non-interpolated data?<br>
I can try and go around it by finding the corresponding
MNI coordinates in the interpolated data (which by now I
have to do by hand, so not optimal anyways), and then look
for those coordinates in .pos. But I was wondering, like
Cornelius was in his post, whether there is a neater way
to get this information.<br>
<br>
Thanks a lot for the help, <br>
Vitória<br>
<br>
<br>
<div>
<div class="gmail_extra">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>
<div>
>>>>>>>>>>>>>><br>
<br>
Hi mailing list,<br>
<br>
I'm still struggling with the conversion of
coordinates between source and<br>
interpolated source space.<br>
For example, if i have the position of a
single grid point how do i get the<br>
corresponding voxel in the interpolated
source structure. Or the other way<br>
around, how to get the grid point which
corresponds to a voxel (e.g the max<br>
voxel) in the interpolated source structure.<br>
<br>
I think this should be a common problem when
working with virtual<br>
electrodes, shouldn't it?<br>
<br>
To make things easier i put together a example
with the data from the<br>
source tutorial where i tried to calculated
the grid pos of the max voxel<br>
in the interpolated source.<br>
<br>
clear all;<br>
load sourcePost_nocon; % source
structure from tutorial<br>
mri = ft_read_mri('Subject01.mri'); % mri of
subject01 from tutorial<br>
<br>
sourceNAI = sourcePost_nocon;<br>
sourceNAI.avg.pow = sourcePost_nocon.avg.pow
./ sourcePost_nocon.avg.noise;<br>
sourceNAI=rmfield(sourceNAI,'freq'); % had to
remove that to let<br>
<br>
cfg = [];<br>
cfg.downsample = 2;<br>
cfg.parameter = 'avg.pow';<br>
sourceNAIInt = ft_sourceinterpolate(cfg,
sourceNAI , mri);<br>
<br>
% Find position of max activity<br>
[dum, maxindx] = max(sourceNAIInt.avg.pow(:));<br>
[xi, yi, zi] = ind2sub(sourceNAIInt.dim,
maxindx);<br>
posInt=[xi, yi, zi];<br>
<br>
% Plot interpolated source with position of
max activity<br>
cfg = [];<br>
cfg.method = 'ortho';<br>
cfg.funparameter = 'avg.pow';<br>
cfg.locationcoordinates = 'voxel';<br>
cfg.location = posInt; %
location of max activity is marked<br>
correctly.<br>
figure;<br>
ft_sourceplot(cfg,sourceNAIInt);<br>
<br>
% Transform coordinate back to uninterpolated
source???<br>
dpos = warp_apply(inv(mri.transform), posInt,
'homogeneous');<br>
<br>
<br>
% Plot uninterpolated source with position
aquired from interpolated source<br>
cfg = [];<br>
cfg.method = 'ortho';<br>
cfg.funparameter = 'avg.pow';<br>
cfg.locationcoordinates = 'voxel';<br>
cfg.location = dpos; %
unfortunately this coordinate is<br>
obviously wrong!!! WHY?<br>
figure;<br>
ft_sourceplot(cfg,sourceNAI);<br>
<br>
<br>
Unfortunately the solution of Jan Mathijs did
not work, nor did mine :(<br>
<br>
Any ideas???<br>
<br>
Cornelius<br>
<br>
<br>
</div>
</div>
</blockquote>
</div>
<br>
</div>
<br>
</div>
<br>
</div>
<br>
_______________________________________________<br>
fieldtrip mailing list<br>
<a moz-do-not-send="true"
href="mailto:fieldtrip@donders.ru.nl">fieldtrip@donders.ru.nl</a><br>
<a moz-do-not-send="true"
href="http://mailman.science.ru.nl/mailman/listinfo/fieldtrip"
target="_blank">http://mailman.science.ru.nl/mailman/listinfo/fieldtrip</a><br>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
fieldtrip mailing list
<a class="moz-txt-link-abbreviated" href="mailto:fieldtrip@donders.ru.nl">fieldtrip@donders.ru.nl</a>
<a class="moz-txt-link-freetext" href="http://mailman.science.ru.nl/mailman/listinfo/fieldtrip">http://mailman.science.ru.nl/mailman/listinfo/fieldtrip</a></pre>
</blockquote>
<br>
</body>
</html>