fMRI pipelines for 1st-level analyses

Click on the flag to see the version in English

ENflag1

Version française

Nous présentons ici les aspects pratiques de l’analyse statistique de premier niveau de données  acquises en Imagerie par Résonance Magnétique fonctionnelle (IRMf) à l’aide du logiciel “open-souce” SPM12 (Statistical Parametric Mapping)  sur environnement Matlab. Cette procédure est réalisée à la suite des étapes de pré-traitement des images fonctionnelles.

Analyse statistique de premier niveau sur SPM12
1. Prérequis
2. Préparation des “onsets”
3. Spécification du modèle IRMf
4. Estimation des paramètres
5. Définition des contrastes
6. Visualisation des résultats

Les analyses de premier niveau concernent le calcul des statistiques individuelles (pour chaque sujet). Elles sont requises afin de procéder par la suite à des analyses statistiques de groupe, de “second niveau”. Il s’agit donc dans cette étape de fournir à SPM les images prétraitées et la liste des conditions expérimentales, afin d’étudier l’effet de ces différentes conditions sur le niveau de signal des images (“activations”).

Pour une analyse préparée via l’éditeur de batch de SPM, le batch comprendra les trois modules suivants, sur lesquels nous reviendront plus en détail ci-après :”fMRI model specification”, “Model estimation”, “Contrast Manager”.

Pour les développeurs confirmés, les pipelines d’analyse de premier niveau sont disponibles en langage Matlab en cliquant sur le lien suivant.

CREx_fMRI_First_Level

Comme précédemment une autre possibilité pour traiter les données sur SPM12 est d’utiliser un assistant de codage ou un “éditeur de Batch”.

1. Prérequis
  • Matlab: version >= R2007b (7.4)
  • SPM12: dernière version, cliquez ici.
  • Données d’entrée :
    • Images IRM 3D (ou 4D) pré-traitées : généralement réalignées, normalisées et lissées (ici, nom de fichier de type swua*.nii). Voir étapes précédentes.
    • Paramètres de mouvements: fichiers  “rp_*.txt” issus de l’étape de réalignement (un fichier rp_*.txt par session)
    • Liste détaillée des événements survenant au cours de l’expérience (alternance des conditions, indices temporels, etc.), ou fichier de sortie du logiciel de présentation des stimuli (d’où pourront être extraites ces informations)
    • Optionnel : masque explicite normalisé généré à partir de l’image anatomique du sujet
2. Préparation des “onsets” (moments d’apparition)

Afin d’effectuer les analyses de premier niveau, il est nécessaire d’indiquer à SPM le design expérimental, ou dit plus simplement, la séquence des événements survenant dans l’expérience. Dans SPM, le design expérimental est défini par le moment d’apparition de chaque stimulus, la durée de stimulation, et le nom de la condition expérimentale. Ces informations doivent le plus souvent être extraites du fichier de résultats généré par le logiciel de présentation des  stimuli (un exemple de script Matlab réalisant cette extraction est fourni plus bas).

Le plus souvent, ces informations sont fournies à SPM sous la forme d’un fichier .mat contenant 3 tableaux de cellules (“cell array”) portant un nom spécifique :

  • “names”: chaque cellule contient le nom d’une condition, par exemple : names = { ‘FIXATION’, ‘WORDS’, ‘NONWORDS’ } ;
  • “onsets”: pour chacune des conditions définies, chaque cellule contient une liste de valeurs (croissantes) correspondant au moment de l’apparition de cette condition (en secondes, T0 correspondant au premier volume fonctionnel).  Par exemple, pour la conditions ‘NONWORDS’ : onsets{1 , 3} = [4; 27; 64; 100; 149;… etc.]
    Pour un design “en blocs”, on indiquera en tant qu’onsets le moment d’apparition de chaque bloc d’une même condition (premier stimulus du bloc), alors que pour un design “événementiel”, on indiquera le moment d’apparition de chaque stimulus individuel.
  • “durations”: pour chacune des conditions définies, chaque cellule contient la liste des durées (en secondes) associées à chaque onset (durée du bloc ou durée de présentation du stimulus). Par exemple, pour la conditions ‘NONWORDS’ : durations{1 , 3} = [12; 13; 14; 12; 14;… etc.]. Si la durée des blocs ne varie pas on pourra ici n’indiquer qu’une seule valeur par condition. Dans un design événementiel où la durée des événements est courte ou n’est pas déterminante, SPM demande d’indiquer une durée de 0.

Important : un fichier .mat de ce type doit être généré pour chaque session (ou “run”) si l’expérience en contient plusieurs.

Notes :

  • Il est possible de construire son fichier d’onsets en volumes (scans) plutôt qu’en secondes. Cela devra simplement être indiqué plus tard dans le batch de premier niveau.
  • Il est aussi possible de spécifier les “onsets” manuellement dans la fenêtre de batch SPM (sans utiliser le fichier .mat).

Si vous souhaitez rajouter des régresseurs supplémentaires à votre modèle statistique, ils devront être rajoutés dans ce fichier .mat des onsets. Un régresseur “réponse_du_sujet” peut par exemple être utilisé pour modéliser, en tant qu’ “événements” (durée = 0), tous les instants où le sujet appuie sur le bouton réponse:
names{1 , 4} = “RESPONSE”;
onsets{1 , 4} = [37.94; 60.71; 91.36; 143.13; …etc. ];
durations{1,4} = 0;
Pour notre expérience, nous avons créé le fichier .mat (ici nommé *_onsets.mat) contenant les informations requises à partir du tableau de données (format .txt) produit par le programme LabView (utilisé pour présenter les stimuli). Un script Matlab peut être utilisé pour automatiser la procédure. Il existe une procédure simple pour générer un script “de base” permettant par la suite d’extraire les informations d’un fichier de type .txt: Sous Matlab: clic-droit sur le fichier, puis “Import Data”. Dans la fenêtre qui s’ouvre, cliquer sur le menu déroulant “Import Selection”, puis “Generate Script”.

  • Exemple d’un script Matlab permettant de générer le fichier “*_onsets.mat” à partir d’un tableau de sortie du programme LabView au format .txt (fichier log d’un participant fourni en exemple) :

LabViewLog_2_SPM_onsets

3. Spécification et du modèle IRMf

Pipeline via l’éditeur Batch de SPM

  • Démarrez SPM avec la commande Matlab suivante “spm fmri”.
  • Dans le menu principal, cliquez sur le bouton “Specify 1st-level” (il est possible de passer par le bouton “Batch”, puis de sélectionner le menu SPM > Stats > fMRI model specification)
  • Cf. capture d’écran ci-dessous en exemple pour renseigner les champs de l’éditeur Batch.

modelspecific

Informations à fournir et fichiers d’entrée

  • Directory : indiquer ici le dossier dans lequel enregistrer les résultats de l’analyse
  • Units for design : choisir ici “seconds” (ou “scans” en fonction de l’unité choisie lors de la préparation du fichier d’onsets)
  • Interscan interval :  indiquer le TR (en secondes) (durée séparant le début de l’acquisition de chaque volume consécutif)
  • Data & Design : ajouter ici autant de sessions (ou “runs”) qu’en contient votre expérience
    • Scans : pour chaque session, ajouter ici les volumes prétraités (swua*.nii)
    • Multiple conditions : pour chaque session, fournir ici à SPM le fichier .mat contenant les informations sur les conditions (*_onsets.mat, contenant {names}, {onsets}, {durations})
    • Multiple regressors : pour chaque session, fournir ici le fichier rp_*.txt issu de l’étape de réalignement (rajoute 6 colonnes dans la matrice, ceci permet de mieux contrôler dans l’analyse les biais lié aux mouvements du sujet). SPM accepte alternativement ici un fichier .mat contenant les régresseurs dans une matrice “R”. C’est le cas du fichier généré par la toolbox “ART” (artefact detection tool). Indiquez alors ici le fichier “art_regression_outliers_and_movement_*.mat
  • Masking threshold: un masque est automatiquement généré par SPM à partir des images dans le but de restreindre l’analyse statistique aux seuls voxels ayant un niveau de signal suffisant. En fonction des niveaux de contraste de vos images, le seuil par défaut de SPM (0.8) peut s’avérer trop strict (nous optons ici pour 0.3). Pour s’en assurer, visualisez l’image “mask.nii” après avoir lancé l’analyse une première fois.
  • Explicit mask : (optionnel) fournir ici le masque explicite réalisé lors des prétraitements  à partir des résultats de la segmentation de l’IRM anatomique (explicitMask.nii). Cela peut être utile pour exclure d’emblée de l’analyse les voxels en dehors du cerveau.

Attention: le masque utilisé par SPM (“mask.nii”) et contenant les voxels a analyser est l’intersection du masque explicite et du masque implicite généré automatiquement. Élargir ou restreindre le masque explicite peut donc n’avoir aucun impact s’il est toujours plus large que le masque implicite. Il est possible de “désactiver” ce dernier en indiquant “0” ou “-Inf” en tant que Masking Threshold.

masks_v2

Exemples de masques produits par SPM (“mask.nii”) selon les choix dans les paramètres “Masking threshold” et “Explicit mask”.

 

Fichier de sortie

  • Dans le répertoire spécifié dans le batch (champ Directory) se trouve le fichier “SPM.mat” contenant tous les paramètres de l’analyse statistique (régresseurs, emplacement des images, etc.).
    Les informations contenues dans ce fichier peuvent être visualisées via le bouton “Review” du menu principal de SPM.

reviewspm-mat

Exemple d’informations accessibles via le bouton “Review”, pour une matrice de design comprenant 4 runs (cliquez pour agrandir).

4. Estimation des paramètres

Les résultats du modèle spécifié lors l’étape doivent nécessairement être calculés via une étape d'”estimation des paramètres”. Celle-ci est accessible dans l’éditeur de batch via le menu SPM > Stats > Model estimation (ou via le bouton “Estimate” dans la fenêtre principale de SPM).

  • Cf. capture d’écran ci-dessous en exemple pour renseigner les champs de l’éditeur Batch.

estimation

Fichier d’entrée et informations à fournir

  • Select SPM.mat: fournir fichier SPM.mat issu de l’étape précédente (possibilité d’utiliser “Dependency” si le module précédent est présent dans le même batch)

Principaux fichiers de sortie

  • SPM.mat (modifié)
  • Images “beta_00xx.nii” (images contenant les paramètres estimés pour chaque colonne de la matrice du design expérimental)
5. Définition des contrastes

Les contrastes permettent de comparer les conditions les unes avec les autres. Pour un simple contraste T, il s’agit d’un vecteur, souvent à somme nulle, indiquant grossièrement le “poids” à donner de chacune des colonnes (correspondant aux conditions/régresseurs dans la matrice du design expérimental). Pour observer les aires cérébrales activées par la condition WORDS par rapport à la condition NONWORDS, on donnera une valeur de 1 à la première et -1 à la seconde (0 pour les autres) (exemple plus bas: section “6. Visualisation des résultats”).

La spécification des contrastes est accessible dans l’éditeur de batch via le menu SPM > Stats > Contrast Manager.

  • Cf. capture d’écran ci-dessous en exemple pour renseigner les champs de l’éditeur Batch.

contrasts

Fichier d’entrée

  • Select SPM.mat: fournir fichier SPM.mat issu de l’étape précédente (estimation des paramètres) (possibilité d’utiliser “Dependency” si le module précédent est présent dans le même batch)
  • Contrast session: ajouter autant de T-contrasts et de F-contrasts que souhaité
    • Name: nom du contraste: e.g. “WORDS > NONWORDS”
    • Weight vector: vecteur de poids du contraste souhaité. e.g. notre matrice contient 10 colonnes : FIXATION, WORDS, NONWORDS, RESPONSE, puis 6 colonnes pour les paramètres du mouvement. Le vecteur qui nous intéresse est donc [0 1 -1 0 0 0 0 0 0 0]

Principaux fichiers de sortie

  • SPM.mat (modifié)
  • Images “con_00xx.nii”: images contrastes, qui seront utilisées pour l’analyse de groupe (2nd niveau)
  • Images “spmT_00xx.nii” (et/ou “spmF_00xx.nii”) : cartes de T (ou de F) correspondant à ces mêmes contrastes

Notes :

  • Selon le type d’analyse envisagée au second niveau, il peut être utile de générer des contrastes correspondants simplement à l’effet simple d’une seule condition par rapport à la ligne de base (de type [1 0 0…], [0 1 0…]
  • Un F-test regroupant les principales conditions d’intérêt pourra être utile dans l’exploration des résultats (voir ci-après). Il peut par exemple s’écrire pour les 3 premières conditions sous la forme “eye(3,3)” : [1 0 0; 0 1 0 ;0 0 1] (les zéros complémentaires manquants seront ajoutés automatiquement).
6. Visualisation des résultats

Les résultats de premier niveau (tout comme, plus tard, ceux de second niveau) peuvent être visualisés en utilisant le bouton “Results” de la fenêtre principale de SPM, puis en sélectionnant le fichier SPM.mat. Vous pouvez ensuite choisir le contraste qui vous intéresse ou en écrire de nouveaux.

SPM propose par défaut un seuil statistique non corrigé (p < 0.001, unc.) et un seuil avec correction FWE (p < 0.05, FWE corr.). Il est possible d’y ajouter un seuil d’étendue (k = nombre de voxels minimal pour un cluster). Il est aussi possible d’utiliser des masques inclusifs ou exclusifs, et de réaliser des conjonctions en sélectionnant plusieurs contrastes.

Outre la table de résultats indiquant les valeurs statistiques et les coordonnées des voxels significatifs, SPM possède différentes options de visualisation, notamment via “Overlays… > Sections” et “Overlays… > Render” (vous pouvez utiliser les images templates se trouvant dans les dossiers “canonical” et “rend” de SPM).

resultsExemple du résultat du contraste WORDS > NONWORDS, pour un participant, avec un seuil de p < 0.001 non corrigé. Le fichier “render” utilisé est “cortex_20484.surf.gii”, fourni dans SPM, avec l’option “inflate” accessible via un clic-droit sur l’image.

Après avoir positionné le curseur sur un voxel d’intérêt (e.g. clic-droit > “Go to global maximum”: pic dans le gyrus temporal moyen), le bouton “plot” permet d’afficher différents types d’informations. Par exemple: “Contrast estimate and 90% C.I.” > sélectionner le contraste de type F-test comprenant une condition par ligne (i.e. eye(3,3)) pour visualiser rapidement la valeur beta (i.e. estimation de la variation du signal BOLD) que prend ce voxel dans chacune des trois conditions :

results_estimateBetas estimés pour un voxel dans le cortex temporal moyen, conditions FIXATION, WORDS, NONWORDS. Les barres d’erreur représentent les intervalles de confiance (C.I.) à 90%.

posté par Samuel Planton et Valérie Chanoine le 10/10/2016

English Version

 

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

Rechercher dans OpenEdition Search

Vous allez être redirigé vers OpenEdition Search