<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>