Click on the flag to see the version in English
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.
Pré-traitements sur SPM12
1. Prérequis
|
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.
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.
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.
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.
Editeur 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.
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.
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.
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.
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
|
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.
Preprocessing using SPM12
1. Requisites
|
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
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
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
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
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
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
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
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
Matlab script without Batching Editor
CREx_fMRI_Preprocessing_Prisma : fonction DoExplicitMask