[pymvpa] Surface searchlight problems (alignment related)

Mike E. Klein michaeleklein at gmail.com
Sun Feb 8 19:58:22 UTC 2015

Hi PyMVPAers,

I message you after weeks of frustration and feeling progressively more
dumb. I am attempting to do a surface-informed MVPA analysis and am
approaching the “screw it, I’ll stick with my volumetric results” decision
point, but wanted to try to make one final push before I fly the white
flag. I am generally new to surfaces, FreeSurfer, AFNI/SUMA, which is
adding to my confusion (new software, file formats, etc.). I have an
audio-motor task, and volumetric searchlights are highlighting STG as well
as inferior parietal areas (like S2), which I very much hope to
disambiguate using the surface-constrained approach. Separately, this
approach just makes more inherent sense and I want to be able to constrain
my MVPAs to the surface going forward.

   - I’m having two sorts of issues:
      - 1. Registration-related. While the FreeSurfer surfaces look
      well-registered to the input anatomicals, the same isn’t true of the
      surfaces projected into functional space (although it’s not terrible).
      Registration woes then get even worse following MVPA, as sanity check
      analyses (sound vs. silence) shows best decoding in regions that are
      clearly posterior and superior (by multiple centimeters) to primary
      auditory cortex.
      - 2. How to do a statistical analysis on the group data (11
   - I’ve put a few screenshots, referenced below, at:
   - I’m not getting any explicit python errors, but am nonetheless clearly
   doing this amiss somewhere.
   - List of steps (with issues in italics)
      - 1. fMRI (volume) preprocessing (motion correction etc.) done in SPM8
      - 2. Surface extraction from anatomical (in native anatomical space)
      done with FreeSurfer
      - 2a. Quality of surfaces and alignment to the anatomical visually
      inspected with FreeView.
      - 3. pymvpa2-pre-afni-surf run to:
         - a. resamples the surfaces to standard topologies (with different
         resolutions) using MapIcosehedron
         - b. aligns surfaces to a reference functional volume,
         - c. merges left and right hemispheres into single surface files.
         - I did this with pymvpa2-prep-afni-surf -e
         mySub/example_functional_volume.nii -d surfer/mySub/surf/ -r
            - example_functional_volume.nii is taken from my 4D time
            series. I visually verified that the entire time series was in good
            alignment with the example.
         - Step 3a vs. Step 3b is a point of a confusion for me. I think I
      am being thrown off by the phrase “standard topologies.” We are
      the anatomically-extracted surface into the functional space so that the
      functional data does not need to be transformed/interpolated
      (unintentionally smoothed). If that is the case, then how are “standard
      topologies” involved? (When I hear standard, I think “standard
space” like
      MNI152, etc.) Is the idea that the -shape- of the surface sheet isn’t
      altered in this “resampl[ing],” but instead just the specific locations
      (and numbering schemes) for the vertices/edges? This is the only
      explanation that makes sense to me.
      - 4. Visually check the alignment of one of the new suma surfaces
      (e.g. mh_ico32_al.spec) with the example functional volume using
      I am doing this by running:
         - afni -niml &
         - suma -spec mh_ico32_al.spec -sv example_functional_volume.nii &
            - (I’m showing this with both a T2 and a T1 image registered
            the example functional in the T2’s 3mm space, as it’s
easier to see.) These
            images are shown in two of the screenshots.
         - pressing “t” in SUMA to link together AFNI and SUMA
         - This, to me, looks OK, but not great. There is clearly much
         correspondence between the surfaces and the volume, although
the STG/HG
         area (on right) looks particularly bad to me.
         - Separately, I get a warning message about a force switch from
         the original view to talairach view. I’m not sure why this
would be, as all
         of these volumes and surfaces should be in the functional space...
      - 5. Run the PyMVPA surface searchlight script.
         - I’m doing this as a sanity check: decoding sound vs. silence.
         - I’m using the merged (m) hemisphere option and I’m using what I
         think are essentially default settings:
            - highres_ld = 128
            - pial_surf_fn = os.path.join(surfpath, "ico%d_%sh.pial_al.asc %
            (highres_ld, hemi))
            - white_surf_fn = os.path.join(surfpath,
            "ico%d_%sh.smoothwm_al.asc” % (highres_ld, hemi))
            - lowres_ld = 32 # 16, 32 or 64 is reasonable. 4 and 8 are
            really fast
            - source_surf_fn = os.path.join(surfpath,
            "ico%d_%sh.intermediate_al.asc % (lowres_ld, hemi))
            - radius = 123
            - qe = disc_surface_queryengine(radius, epi_fn, white_surf_fn,
            pial_surf_fn, source_surf_fn, nproc=4)
            - clf = LinearCSVMC()
            - cv = CrossValidation(clf, NFoldPartitioner(), errorfx=lambda
            p, t: np.mean(p == t), enable_ca=['stats'])
         - 6. I’m then checking the results with AFNI/SUMA.
         - *While I do get very high (almost 100% decoding) in certain
         regions for sound/silence, the peaks are not along the STG/HG as they
         should be. Instead they are considerably posterior and
superior (the SMG
         and surrounding). This doesn’t pass the smell test, as is
also at odds with
         my volumetric results, which show maximal decoding in and around A1.*
         - A stray thought, but if I display the suma surfaces over my
         anatomical in its native space, the surface-HG region fits
over the native
         anatomical IPL region.
      - And, of course, even if I had all of the issues ironed out, I’m at
      a loss for how to treat the DSET surface MVPA files in a group
analysis. In
      volume space, I’ve run my information maps through SPM. *At present,
      I can’t even get these searchlight result files to load in FreeSurfer’s
      FreeView (even if I convert file formats to something like GII). The blue
      loading bar just spins and spins until the app crashes. *

A very long message I know, but any help would be immensely appreciated.

Thank you!
Mike Klein
MNI, McGill
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/pkg-exppsy-pymvpa/attachments/20150208/906bdf5d/attachment-0001.html>

More information about the Pkg-ExpPsy-PyMVPA mailing list