Ressources numériques en sciences humaines et sociales OpenEdition Nos plateformes OpenEdition Books OpenEdition Journals Hypothèses Calenda Bibliothèques OpenEdition Freemium Suivez-nous

fMRI Preprocessing via SPM12

Click on the flag to see the version in English

ENflag1

Version française

SPM12


Nous commencerons par les étapes de pré-traitements décisives pour améliorer la puissance des tests statistiques, à savoir, la suppression des distorsions spatiales dues aux inhomogénéités du champ magnétique (Fieldmap), la suppression des artéfacts de mouvements (Realign) et  celle des dérives du décours temporel lié au signal (Slice Timing). Une vue d’ensemble des étapes de pré- et post-traitements via SPM12 est présentée dans la figure ci-dessous.

overview_preprocess

Pré-traitements sur SPM12
1. Prérequis
2. Fieldmap
3. Slice Timing
4. Realign and Unwarp
5. Coregister
6. Segment
7. Normalize
8. Smoothing
9. Masque Explicite

Pour les développeurs confirmés, les pipelines de pré-traitements sont disponibles en langage matlab en cliquant sur le lien suivant.

CREx_fMRI_Preprocessing_Prisma

Une autre possibilité pour traiter les données sur SPM12 est d’utiliser un assistant de codage ou un “éditeur de Batch”  comme nous allons le voir ultérieurement.

 

Pré-traitements sur  SPM12
1. Prérequis
  • Matlab: version >= R2007b (7.4)
  • SPM12: dernière version, cliquez ici.
  • Données d’entrée : Fieldmap, données IRM anatomiques et fonctionnelles.  Toutes les images IRM de format nifti ont été acquises sur un imageur 3 teslas (SIEMENS Prisma) au Centre IRMf-INT de Marseille (Hôpital de la Timone, Marseille) et s’inscrivent dans le cadre de projets  BLRI (labex “Brain and language Research Institute”).

Le format NIfTI-1
SPM12 utilise un format standard d’images 3D ou 4D dans appelé  NIfTI-1 (avec l’extension “.nii”). Dans un volume d’acquisition (ou “scan”), le fichier nifti contient une image bitmap des données cérébrales. L’image bitmap correspond aux valeurs de substances grises de chaque voxel et à une matrice de transformation relative à un système de coordonnées en 3D. Pour les fichiers 4D de type nifti, SPM12 propose un outil d’accès aux fichiers 3D sans la nécessité d’une conversion de 4D à 3D (voir la fonction Expand image frames ici pour plus de détails).

2. Fieldmap

Les scans IRMf connaissent généralement des distorsions spatiales dues aux inhomogénéités du champ magnétique. Ces distorsions peuvent être amoindries à l’aide d’une carte de champ mesurant les inhomogénéités du champ et les ajustant à celle provenant des données IRMf. La fonction Fieldmap de SPM sert à mesurer les inhomogénéités du champ.  Nous verrons plus tard que la fonction Unwarp permet de corriger ces distorsions spatiales.

Pipeline via l’éditeur Batch de SPM

  • Déterminez les paramètres de la Fieldmap
    Les valeurs  “Echo Time” et “Readout Time” sont disponibles respectivement dans les fichiers Fieldmap et EPI d’extension “txt” (ou dans le fichier header de la Fielmap).
  • Calculez le paramètre “Long Echo-Time”
    Long Echo-Time = Short Echo-Time + Inter-Echo Time
  • Exemple de paramètres de la Fieldmap
    SHORT_ECHO_TIME = 4.92;
    LONG_ECHO_TIME = 7.38;
    READOUT_TIME = 42;
  • Démarrez SPM avec la commande Matlab suivante “spm fmri”.
  • Cliquez sur le bouton “Batch”
  • Dans l’éditeur Batch, sélectionnez le menu SPM>Tools>FieldMap>Calculate VDM
  • Cf. capture d’écran ci-dessous en exemple pour renseigner les champs de l’éditeur Batch.

capture_fieldmap
Editeur de Batch SPM12 :  FieldMap – calculate VDM

Fichiers d’entrée

  • Images FieldMap en phase et en amplitude (*fieldmap*.nii)
  • Image anatomique de masquage (*T1.nii)
  • Première image fonctionnelle brute de la première session ( First EPI Raw Image – Session 1)
  • Image anatomique T1 (*T1_MPRAGE*.nii)

Fichiers principaux de sortie

  • Dans le répertoire des données FieldMap : 1 fichier vdm (vdm5_*.nii)

Script Matlab sans l’éditeur Batch
CREx_fMRI_Preprocessing_Prisma : fonction DoFieldMap

 

3. Slice Timing

La fonction Slice timing permet de corriger les différences temporelles existantes au moment de l’acquisition  des coupes. Le balayage entre les différentes coupes d’un volume fonctionnel (en l’occurrence celui d’un cerveau entier) ne recouvre généralement pas le cerveau entier en une fois mais plutôt une série de coupes 2D successivement mesurées. Pour un volume cérébral fonctionnel de 30 coupes et un volume TR de 3 secondes, les données de la dernière coupe sont mesurées avec un retard de presque 3 secondes par rapport à celles de la première coupe. SPM résout ce problème en permettant une correction temporelle entre les séries fonctionnelles. Cette étape de correction temporelle n’est pas nécessaire si le TR est est de l’ordre de la seconde.

Pipeline via l’éditeur Batch de SPM
Cf. la capture  d’écran ci-dessous pour renseigner les champs de l’éditeur Batch.

capture-slicetiming
Editeur de Batch SPM12 : Slice Timing

Fichiers d’entrée

  • Images fonctionnelles par session : raw EPI Images
  • Fichier matlab du début d’apparition des coupes (Slice_times.mat)
  • Calcul de la coupe référente : slice_times (size(slice_times,2)/2)

Fichiers de sortie

  • Images fonctionnelles : Sliced EPI Images (a*.nii)

Script Matlab sans l’éditeur Batch
CREx_fMRI_Preprocessing_Prisma : fonction DoSliceTiming

 

4. Realign and Unwarp

Realign est une fonction basique qui permet l’alignement spatial d’images. Elle repose sur des translations et des rotations des scans les uns par rapport aux autres. Par essai-erreur, la fonction tente de trouver les manipulations qui minimisent les différences entre deux scans (processus de minimisation de la somme des carrés).

Unwarp peut-être utilisé pour corriger les distorsions spatiales causées par les inhomogénéités du champ magnétique.

Pipeline via l’éditeur Batch de SPM
Cf. la capture  d’écran ci-dessous pour renseigner les champs de l’éditeur Batch.

capture_realign
Editeur de Batch SPM12 : Realign & Unwarp

Fichiers d’entrée

  • Images fonctionnelles par session :Sliced EPI files (a*.nii)
  • Fichier de sortie de la FieldMap (1 par session) : vdm5_*.nii

Fichiers de sortie

  • Images fonctionnelles réalignées  (ua*.nii )
  • Image moyenne de toutes les sessions (meanua*.nii )

Script Matlab sans l’éditeur Batch
CREx_fMRI_Preprocessing_Prisma : fonction DoRealignUnwarp

 

5. Coregister

La fonction Coregister est utilisée pour apparier les scans de diverses modalités,  par exemple, les images anatomiques (T1) et les images fonctionnelles (EPI). Le processus de minimisation de la somme des carrés des écarts ne fonctionne pas ici car la différence des images est très élevée. En revanche, un processus  appelé “Mutual Information” est utilisé  (cf. Starters’s guide Erno Hermans).

Pipeline via l’éditeur Batch de SPM
Cf. la capture  d’écran ci-dessous pour renseigner les champs de l’éditeur Batch.

capture_coregisterEditeur de Batch SPM12 : Coregister –Estimate

Fichiers d’entrée

  • Images fonctionnelles : Realigned EPI mean  (meanua*.nii)
  • Image anatomique T1 (*T1_MPRAGE*.nii)

Fichiers de sortie

  • Image anatomique T1 modifiée (*T1_MPRAGE*.nii)

Script Matlab sans l’éditeur Batch
CREx_fMRI_Preprocessing_Prisma : fonction DoCoregister

 

6. Segment

La fonction Segment est utilisée pour séparer les tissus cérébraux : matière grise, matière blanche, liquide céphalo-rachidien, tissus osseux, tissus mous et tissus résiduels de l’image anatomique T1.  La segmentation donne lieu à 6 images de tissus, une matrice de transformation relative à l’espace MNI (un  fichier contenant des paramètres de normalisation et finissant par “*_seg8.mat”) ainsi qu’une image de la déformation du champ (un fichier de type “y_*.nii”).  En utilisant la fonction Deformation (cf. section “Normalize”), ce dernier fichier peut être utilisé pour aligner n’importe quel scan avec une image anatomique segmentée dans l’espace du MNI (Montreal Neurological Institute).

Pipeline via l’éditeur Batch de SPM
Cf. la capture  d’écran ci-dessous pour renseigner les champs de l’éditeur Batch.

capture-newsegment
Editeur de Batch SPM12 : Segment

Fichiers d’entrée

  • Image anatomique : Coregistred Structural Image
  • Cartes probabilistes des tissus cérébraux (template TMP de Seg toolbox)

Fichiers de sortie

  • Image native  de la substance grise : c1*.nii
  • Image native de la substance blanche : c2*.nii
  • Image native  du liquide céphalo-rachidien : c3*.nii
  • Image native des tissus osseux : c4*.nii
  • Image native des tissus mous : c5*.nii
  • Matrice de transformation relative à l’espace MNI  : *_seg8.mat
  • Image de déformation du champ : y_*_anat01.nii

Script Matlab sans l’éditeur Batch
CREx_fMRI_Preprocessing_Prisma : fonction DoSegment

7. Normalize

L’image de la déformation du champ est utilisée pour normaliser les images dans l’espace standardisé MNI.

Pipeline via l’éditeur Batch de SPM
Cf. la capture  d’écran ci-dessous pour renseigner les champs de l’éditeur Batch.

capture_norm

Editeur de Batch SPM12 : Normalize Write

Fichiers d’entrée

  • Deformation Field Image : y_*T1_MPRAGE*.nii
  • Image structurale coregistrée ( *T1_MPRAGE*.nii)
  • Toutes les images fonctionnelles réalignées (ua*.nii)
  • Image native  de la substance grise : c1*.nii
  • Image native de la substance blanche : c2*.nii
  • Image native  du liquide céphalo-rachidien : c3*.nii

Fichiers de sortie

  • Image structurale normalisée (w*T1_MPRAGE*.nii)
  • Images fonctionnelles normalisées (wua*.nii)
  • Image normalisée de la substance grise : wc1*.nii
  • Image normalisée de la substance blanche : wc2*.nii
  • Image normalisée du liquide céphalo-rachidien : wc3*.nii

Script Matlab sans l’éditeur Batch
CREx_fMRI_Preprocessing_Prisma : fonction DoNormalise

8. Smoothing

La fonction Smoothing est utilisée pour corriger la variabilité anatomo-fonctionnelle restante entre les sujets et améliorer le ratio signal sur bruit. Toutefois, il existe une relation inverse entre le niveau de smoothing et l’exactitude de la résolution spatiale. Le smoothing est réalisé par un moyennage de chaque voxel avec la somme pondérée de ses voisins. La pondération est définie par un noyau gaussien et la taille de la Gaussienne est donnée par la pleine largeur de la moité du maximum  (Full Width at Half Maximum ou FWHM).  Typiquement, une Gaussienne avec un FWHM qui a 2 fois la taille du voxel est utilisée. Par exemple, un FWHM de [6mm 6mm 6mm] est communément utilisé pour une résolution spatiale de [3mm 3mm 3mm].

Pipeline via l’éditeur Batch de SPM
Cf. la capture  d’écran ci-dessous pour renseigner les champs de l’éditeur Batch.

smoothing
Editeur de Batch SPM12 : Smoothing – Write

 Fichiers d’entrée

  • Images fonctionnelles normalisées (wua*.nii)

Fichiers de sortie

  • Images fonctionnelles lissées (swua*.nii)

Script Matlab sans l’éditeur Batch
CREx_fMRI_Preprocessing_Prisma : fonction DoSmooth

 

9. Masque Explicite

Pour optimiser les analyses statistiques ultérieures, nous préférons utiliser un masque explicite du cerveau entier de chaque individu, construit à partir des tissus anatomiques de la matière grise, matière blanche et liquide céphalorachidien via la fonction  Image Calculator de SPM.

Pipeline via l’éditeur Batch de SPM
Cf. la capture  d’écran ci-dessous pour renseigner les champs de l’éditeur Batch.

capture_explicitmask
Editeur de Batch SPM12 : Masque Explicite

Script Matlab sans l’éditeur Batch
CREx_fMRI_Preprocessing_Prisma : fonction DoExplicitMask

posté parValérie Chanoine et Samuel Planton le 15/09/2016

English Version

In this page, we present pipelines for pre- and post-processing functional Magnetical Imaging Resonance (fMRI) data using the open-source package SPM12 (Statistical Parametric Mapping) within the Matlab environment. Two options are proposed.

  • The first option,  on matlab environment, is based on the “open-source” software SPM12 (Statistical Parametric Mapping).
  • The second uses  “docker” (i.e. a turnkey environment  that contains the libraries necessary for pre-processing the data) known as fMRIPrep, déveloped by  the Poldrack laboratory in Stanford.
Two options for pre-processing fMRI data
1. SPM12
2. fMRIPrep

SPM12


We begin by data preprocesses that are an important step to improve the power of statistical tests, i.e. by removing spatial distorsions due to field inhomogeneities (Fieldmap), removing head motion artifacts (Realign) and removing drifts in signal time courses (Slice Timing). An overview of all preprocesses is presented in the figure below.

overview_preprocess

Preprocessing using SPM12
1. Requisites
2. Fieldmap
3. Slice Timing
4. Realign and Unwarp
5. Coregister
6. Segment
7. Normalize
8. Smoothing
9. Explicit Mask

For advanced developers, preprocessing pipelines are available in matlab language by clicking on the following link.

CREx_fMRI_Preprocessing_Prisma

Another possibility to process data on SPM12 is to use a coding wizard or “Batch Editor” as we shall see later.

Preprocessing using SPM12
1. Requisites
  • Matlab: version >= R2007b (7.4)
  • SPM12: download latest version, click here.
  • fieldmap, anatomical and functional MRI data, as input files. All MRI nifti files of BLRI projects come from the fMRI platform located in Marseille Hospital (Siemens Prisma 3T, Centre IRMf-INT de Marseille).

The NIfTI-1 format
SPM12 uses a standard 3D (or 4D in some cases) image format called NIfTI-1 (with the extension “.nii”). In one scan, the nifti file contains a bitmap image of brain data (i.e., grey values of each voxel) and a transformation matrix placing the bitmap in a 3D coordinate system. For 4D files, SPM12 offers  a tool to acess 3D files without a conversion from 4D to 3D (see the la function Expand image frames here for details).

2. Fieldmap

FMRI scans usually have spatial distortions due to field inhomogeneities. These distorsions can be minimized by using a fieldmap to measure field inhomogeneities and then adjusting the fMRI . The function “Fieldmap” of SPM is used to measure field inhomogeneities. We will see later that the function “Unwarp” is used to correct these spatial distorsions.

Pipeline using Batching Editor

  • Get Fieldmap parameters
    The values of “Echo-Time” and “Readout Time” are available respectively on the Fieldmap and EPI files with the extension ‘txt’ (or in the header file of the fieldmap if you prefer).
  • Compute Long Echo-Time parameter
    Long Echo-Time = Short Echo-Time + Inter-Echo Time
  • Example of Fieldmap parameters
    SHORT_ECHO_TIME = 4.92;
    LONG_ECHO_TIME = 7.38;
    READOUT_TIME = 42;
  • Start SPM with the Matlab command “spm fmri”,
  • Click on “Batch Button”
  • In Batch Editor, select the menu SPM>Tools>FieldMap>Calculate VDM
  • See the capture below for filling out the Batch Editor

capture_fieldmap
Batching FieldMap – calculate VDM

Input files

  • Phase and Magnitude Fieldmap images
  • Template T1 as mask
  • First functional EPI raw from session 1
  • Anatomical image T1

Main Output files

  • FieldMap folder: 1 ‘vdm’ file ( vdm5_*.nii)

Matlab script without Batching Editor
CREx_fMRI_Preprocessing_Prisma : fonction DoFieldMap

 

3. Slice Timing

Slice timing function is used to correct differences in the time when individual slices are recorded. The problem of different slice scanning times stems from the fact that a functional volume (e.g. whole brain) is usually not covered at once but with a series of successively measured 2D slices. For a functional volume of 30 slices and a volume TR of 3 seconds, for instance, the data of the last slice is measured almost 3 seconds later than the data of the first slice. SPM solves this problem by allowing the opportunity to correct (i.e., equalize) the timing of your functional series.This step is not necessary if  theTR is of the order of the second.

Pipeline using Batching Editor
See the figure below for filling out the Batch Editor

capture-slicetiming
Batching Slice Timing

Input files

  • Raw EPI files of all sessions (*.nii)
  • Matlab file of slice onsets (slice_time.mat)
  • Reference Slice calculation: slice_times (size(slice_times,2)/2)

Output files

  • Sliced EPI Images (a*.nii)

Matlab script without Batching Editor
CREx_fMRI_Preprocessing_Prisma : fonction DoSliceTiming

4. Realign and Unwarp

Realign is a basic function to match spatially images. It relies on translations (moving the image in X, Y, or Z direction) and rotations (over the X, Y, and Z axis) to manipulate the scans. By trial and error the function tries to find the manipulation that minimizes the difference between two scans.

Unwarp can be used to correct the spatial distortions around air-filled cavities in the head which are caused by inhomogeneities in the magnetic field.

Pipeline using Batching Editor
See the figure below for filling out the Batch Editor

capture_realign
Batching Realign & Unwarp

Input files

  • EPI  sliced files of all sessions (a*.nii)
  • FieldMap file: 1 file per session( vdm5_*.nii)

Output files

  • EPI realigned files (ua*.nii )
  • Mean (meanua*.nii )

Matlab script without Batching Editor
CREx_fMRI_Preprocessing_Prisma : fonction DoRealignUnwarp

5. Coregister

The Coregister function is used to match scans of different modalities, for instance, anatomical (T1) and functional (EPI) images. The minimization of the sum of squared differences will not work here because the difference between images is very high. A different cost function is used, called Mutual Information (see Starters’s guide Erno Hermans).

Pipeline using Batching Editor
See the figure below for filling out the Batch Editor

capture_coregisterBatching Coregister –Estimate

Input files

  • Realigned EPI mean (meanua*.nii)
  • Structural Image (*T1_MPRAGE*.nii)

Output files

  • Coregistred Structural Image (*T1_MPRAGE*.nii)

Matlab script without Batching Editor
CREx_fMRI_Preprocessing_Prisma : fonction DoCoregister

6. Segment

Segment is used to separate cerebral tissues: Grey Matter (GM), White Matter (WM), CerebroSpinal Flux (CSF), Bone tissue, Soft tissue, AirBackground Tissue in T1 anatomical image. Segmentation results in 6 images which can be used as an alternative for standard normalization in SPM12. It produces a transformation matrix, that is to say a file containing normalization parameters ending with “*_seg8.mat” and also an image of field deformation begining with “y_*.nii”. Using the “Deformation” function (see section “Normalize “), this latter file can be used to put any scan registered with the anatomical that was segmented into MNI (“Montreal Neurological Institute) space.

Pipeline using Batching Editor
See the figure below for filling out the Batch Editor

capture-newsegment
Batching: Segment

Input files

  • Coregistred Structural Image
  • Probalistics maps of cerebral tissues (template TMP of Seg toolbox)

Output files

  • Grey Matter Native: c1*.nii
  • White Matter Native: c2*.nii
  • Cerebrospinal flux Native : c3*.nii
  • Bone Native: c4*.nii
  • Soft Tissue Native: c5*.nii
  • Transformation Matrix: *_seg8.mat
  • Deformation Field Image: y_*_anat01.nii

Matlab script without Batching Editor
CREx_fMRI_Preprocessing_Prisma : fonction DoSegment

7. Normalize

The Deformation field image is used to normalize scans putting scans into standardized (MNI) space.

Pipeline using Batching Editor
See the figure below for filling out the Batch Editor

capture_normBatching Normalization

Input files

  • Deformation Field Image : y_*T1_MPRAGE*.nii
  • Coregistred Structural Image (*T1_MPRAGE*.nii)
  • Realigned EPI Images (ua*.nii)
  • Grey Matter Native: c1*.nii
  • White Matter Native: c2*.nii
  • Cerebrospinal flux Native : c3*.nii

Output files

  • Normalized structural image (w* _anat10.nii)
  • Normalized EPI Images (wua*.nii)
  • Grey Matter Normalized : wc1*.nii
  • White Matter Normalized : wc2*.nii
  • Cerebrospinal flux Normalized : wc3*.nii

Matlab script without Batching Editor
CREx_fMRI_Preprocessing_Prisma : fonction DoNormalise

8. Smoothing

The Smooth function is used to correct for slight remaining functional anatomical variability between subjects and improve the signal-to-noise ratio. However, there is a inverse relation between level of smoothing and accuracy of the spatial resolution. Smoothing is achieved by averaging every voxel with a weighted sum of its neighbors. The weighting is defined by a Gaussian kernel and the size of the Gaussian is given by its Full Width at Half Maximum (FWHM). Typically, a Gaussian with a FWHM that is twice the voxel size is used. For instance, a FWHM of [6mm 6mm 6mm] is commonly used for a spatial resolution of [3mm 3mm 3mm].

Pipeline using Batching Editor
See the figure below for filling out the Batch Editor

smoothing
Batching Smoothing – Write

Input files

  • Normalized EPI Images (wua*.nii)

Output files

  • Smoothed EPI Images (swua**.nii)

Matlab script without Batching Editor
CREx_fMRI_Preprocessing_Prisma : fonction DoSmooth

 

9. Explicit Mask

To optimize subsequent statistical analyzes, we prefer to use an explicit mask of whole brain for each subject that is constructed from the gray matter, white matter and cerebrospinal fluid via the function Image Calculator of SP..

Pipeline using Batching Editor
See the figure below for filling out the Batch Editor

capture_explicitmask
Batching  Explicit Mak

Matlab script without Batching Editor
CREx_fMRI_Preprocessing_Prisma : fonction DoExplicitMask

 

posted byValérie Chanoine and Samuel Planton  on 2016/09/15

Blog du Centre de Ressources pour l'Expérimentation de l'ILCB