Example analysis pipeline of layer-VASO

In this blog post I want to go through the analysis pipeline of layer-dependent VASO.

I will go through the all the analysis steps that need to be done to go from raw data from the scanner to final layer profiles. The entire thing will take about 30 min (10 min analysis and 20 min explaining and browsing through data).

During the entire analysis pipeline I am using the following software packages: SPM, AFNI, and LAYNII, and gnuplot (if you want fancier plotting tools)


1.) The example data

DOWNLOAD LINK: https://goo.gl/4kMEFc (Data from other studies can also be downloaded here: https://openneuro.org/datasets/ds001547)

I use an example dataset from this study. It is a 12 min finger tapping experiment covering a small FOV of the right motor cortex.

The imaging parameters are:

  • 0.74×0.74×1.25 mm
  • TR = 1.5 s (For BOLD and VASO each), resulting in effective resolution of 3s.
  • The time series consists of an interleaved acquisition of images with and without blood nulling.
  • 10 slices
  • remaining parameters can be seen at this summary pdf
  • The tapping task was alternating between 30 min of rest and 30 min or tapping using this psychopy program.
  • The FOV is double tilted coverage_3D_layers.png

2.) Motion correction

  • A manual mask is defined to avoid faulty motion estimation due to variable distortions outside the FOV.
  • The non-steady-state images (the first four time points) are overwritten with steady-state images.
  • The SS-SI VASO sequence acquires images with and without blood nulling interleaved (see also this blog post). Thus, the motion correction is applied separately for BOLD and VASO.
  • Ideally, the motion parameters should be very similar for BOLD and VASO. This needs to be checked manually every time.

If you don’t want to use SPM because of potential reluctance or license issues when using matlab, there is also an AFNI version of motion correction here (note that the results of AFNI motion correction are not as ‘crisp’ as the SPM result).

3.) BOLD correction and contrast combination

  • As explained in previous blog posts (see this blog post), there is a T2*-weighting in any EPI readout. Thus, the image with blood nulling is not solely containing VASO contrast. It also has some unwanted BOLD contamination that can counteract the negative VASO contrast. This BOLD contamination needs to be corrected for. E.g. with a division of the blood-nulled image with the not-nulled BOLD image.
  • Since the blood-nulled and not-nulled image are acquired interleaved, the time series are temporally upsampled (in afni) and shifted with respect to each other, such that the respective contrasts refer to the same point in time.
  • The division happens in the LAYNII program LN_BOCO.
  • The -trialBOCO command averages all the 12 trials together.
  • Since VASO has an inherent T1-weighting included, the time series can also be evaluated to provide a T1-weighted MP2RAGE-like contrast as an anatomical reference in EPI space.

4.) Quality measures

  • Conventional quality measured are also estimated:
    • tSNR: As measure of signal stability
    • MEAN can depict artifacts that disappear in the noise level for single TR imaged
    • Skew and kurtosis show how Gausian the noise distribution is. When the signal is not Gausian, it could be an indication of EPI ghosting or phase inconsistency artefacts.
    • Auto-correlation can also be valuable e.g. during strong head motion.

5.) Functional activity

  • One way to estimate the signal change is to just subtract the signal during activity with the signal during rest.
  • Another way is to use a GLM implemented in all the mayor software packages.

6.) Layering

The layering has been previously already described in this blog post.

    • The first step is to upscale the data to allow smooth layers
    • Then the borderlines can be drawn (e.g. in Fsleyes)
    • The layers can then be calculated with LN_GROW_LAYERS

 

8 thoughts on “Example analysis pipeline of layer-VASO

  1. Hi Ruyuan,

    Yes, you are right. I did not perform any distortion correction. I found that the additional reampling during the distortion correction can result in signal blurring (https://layerfmri.com/unwanted-spatial-blurring-during-resampling/).

    Here, the “anatomical” reference is taken from the same functional data that are used to quantify the signal change. So the ‘anatomical’ data are in the same distorted space as the functional data. Thus, in this case there is no distortion correction necessary.

    Like

  2. Hi Renzo, this example is really good. When I perform the same pipeline on the layer V1 dataset shared on the OpenNeuro, I had a warning below

    If you are performing spatial transformations on an oblique dset,
    such as BOLD.nii,
    or viewing/combining it with volumes of differing obliquity,
    you should consider running:
    3dWarp -deoblique
    on this and other oblique datasets in the same session.
    See 3dWarp -help for details.
    ++ Oblique dataset:BOLD.nii is 14.000014 degrees from plumb.

    Do we need an alignment? If so, what we should align to?

    Like

    1. Hi Yameng,
      This this “warning” is absolutely normal and can be ignored.
      It is partly comming from the fact that afni wasn’t originally developed for tilted slices.
      You do not need to realign the data. The corresponding spatial resampling would only result in unwanted spatial blurring.

      Best, Renzo

      Like

      1. I see. Thanks for your quick and helpful reply. I also sent you an email earlier today. Would you share the V1, LGN, and V5/MT masks you used in the 2019 ISMRM abstract? Thanks in advance.

        Like

  3. Hi Renzo, I have a quick question about the V1 layer data shared on the OpenNeuro. Is the TR 2.5 sec for both VASO and BOLD? But I saw on the slides from ISMRM or OHBM, the TR for VASO is 2.73 sec and for BOLD is 2.07 sec. A little confused.

    Like

  4. Hi,
    As explained here, https://youtu.be/KwX2rscnOxY?t=307, the sequence is using an asymmetric TR. every odd imgage has a TR of 2.73 and every even emage had a TR of 2.07, plus 200ms dead time at the end of every pair.
    Since BIDS does capture this flexibility, OpenNeuro is $#%$ strict about BIDS, we needed to settle on one single value. So the TR in the header is the average TR.

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s