Notizen
Bildschirmpräsentation
Gliederung
1
SPM2 Kurs
von A. Ischebeck
Anja.Ischebeck@uklibk.ac.at
2
SPM
  • Schwerpunkt: Anwendung
    • Nicht: mathematische Grundlagen
  • Links:
    • zu Dokumentation & Tools
  • Generell:
    • SPM recht kompliziert & bedienungsunfreundlich
    • Aber: sehr flexibel:
      • eine Lösung für alle Daten & Probleme
      • open source: neue Tools leicht zu schreiben
3
SPM2 oder SPM99
  • SPM2 und SPM99 i.d.R. nicht kompatibel!
  • SPM2 läuft inzwischen stabil
  • SPM2 wesentlich langsamer als SPM99, insbesondere mit älterem Matlab (5.x)
  • SPM2 Ergebnisse nicht viel besser
  • Scripting unter SPM2 einfacher
  • Reviewer verlangen inzwischen SPM2
  • Manche Tools arbeiten nur mit SPM99, nur wenige mit SPM2
4
Links
  • SPM download (free ware)
    • http://www.fil.ion.ucl.ac.uk/spm/spm2.html
    • Check for updates!!
  • SPM docus:
    • http://www.fil.ion.ucl.ac.uk/spm/dox.html
  • SPM extensions:
    • http://www.fil.ion.ucl.ac.uk/spm/ext/
  • Email discussion list:
    • http://www.fil.ion.ucl.ac.uk/spm/help/
5
Matlab
  • SPM braucht Matlab
    • Matlab kostet Geld, SPM ist open source
    • Matlab 6.5 schneller als 5.x
    • Nicht die neueste Matlab-Version nehmen! Bugs
    • I.d.R. keine weiteren Toolboxen nötig
  • SPM/Matlab ist ressourcenintensiv
    • Schneller Rechner mit viel Speicher
    • Matlab-Tuning
      • e.g. mit 'matlab –nojvm' starten
      • Siehe email discussion list SPM
6
Daten-Konverter
  • SPM verlangt Analyze 3D Format
  • Nützlich: MRIcro
    • http://www.psychology.nottingham.ac.uk/staff/cr1/mricro.html
    • Daten importieren
    • Orientierung ändern
    • Schädel entfernen
    • Schnelle Bildchen
      (blobs auf anat)
7
Beispiel
  • Event-related - Design
    • Zufällige Trialabfolge
    • Mehrere Bedingungen
  • Funktioneller Scan:
    • alle 2s ein Bild mit 20 Schichten (TR=2s)
    • Auflösung: 3 x 3 mm, 5 mm between planes
    • Dauer: 700 Volumes
  • Anatomischer Scan:
    • Auflösung: 1x1x1 mm

8
Rohdaten
  • Scanner-Daten umwandeln in Analyze
    • 2 Dateien pro Zeitpunkt (.img & .hdr)
    • 850 volumes: 1700 Dateien
  • Die ersten func Bilder wegwerfen
    • Magnetische Saturierung (T1 => T2*)


    •                            =>

9
MRIcro: Daten Import
10
MRIcro: Orientierung
  • Open image [analyze]
    • Select file anat*.hdr
  • Save as…
    • z.B. Format Coronal-Up
    • Flip Top/Bottom
    • Rotate
    • Check with Preview
  • Check against SPM Template!
    • Achtung: SPM2: L=L (SPM99 R=L)
  • Wichtig: Check Rechts/Links!
11
MRIcro: Orientierung
  •    Wenn richtig,
    sollte es so aussehen:


12
Start SPM
  • Matlab starten
  • edit (ruft Matlab-Editor auf)
    • function paths();
    • path('d:\matlab\spm2',path);
    • path('d:\matlab\spm_updates', path);
    • ..... (weitere Pfade zu Skripten, Tools etc.)
  • save as: pfad.m
    • ins Arbeitsverzeichnis: d:\matlab\work
  • > pfad %lädt Pfade
  • > spm fmri %startet SPM


13
SPM2
14
Hauptmenü
  • Prepro
  •       (Menü)


15
Hauptmenü
  • Prepro


  • Statistik
  •      (Skript)


16
Hauptmenü
  • Prepro


  • Statistik


  • Ergebnisse
  •     (Menü,Skript)
17
Hauptmenü
  • Prepro


  • Statistik


  • Ergebnisse


  • Utilities
  •      (Menü)
18
Preprocessing
  • Realignment (Bewegungskorrektur)
  • Slice time correction
    • Korrektur des Zeitunterschiedes beim Messen der Schichten
  • Coregistration (evtl. optional)
    • Registrierung beider Bilder (anat zu func)
  • Normalization
    • Angleichen der Bildes auf ein Template (im T&T Koordinatensystem)
  • Smoothing (räumlicher Filter)
19
Realignment
  •                   = Bewegungskorrektur
  • Bezugspunkt:
    • Default: das erste Bild
  • Angeben:
    • VP Anzahl
    • Zahl der Runs/Sesions pro VP
  • Bilder auswählen: s*.img
  • Auswählen:
    • Coregister & Resclice
    • Create: all images and mean image

20
Realignment
21
Realignment
  • Output:
    • r*.mat, wenn reslice: r*.img/.hdr
    • rp_aV0001.txt
    • mean_img/.hdr
    • eine .ps Datei pro VP (Graphik)

  • rp_aV0001.txt:
    • 6 Spalten mit Zahlen pro Bild: 3 params Translation, 3 params Rotation
    • kann man als Regressor in die Analyse stecken

22
Realignment
  • Neue Option: Unwarp
    • korrigiert Bildverzerrung durch Bewegung
      (ein Faktor von vielen)
    • kostet doppelt soviel Rechenzeit
    • Verzerrung hängt ab von
      • Feldstärke (viel ist schlecht)
      • Meßsequenz (EPI), Spulenform
      • Kopfgröße (groß ist schlecht)
    • Verzerrung auch ein Problem für Coreg!


23
Realignment
  • Prozedur:
    • Suche die 6 Parameter (3 translation, 3 Rotation) die die Helligkeitsunterschiede zwischen zwei Scans minimieren
    • 6 Params = rigid body transformation
    • 3D Prozedur (alle Schichten mit Dicke)
    • Parameter beziehen sich immer auf den Bezugspunkt (das erste Bild) einer Meßreihe
24
Realignment
  • Caveat 1:
    • wenn Bezugspunkt <> 1. Bild muß auch Coreg angepaßt werden.
  • Caveat 2:
    • wenn nur coreg (ohne reslice)
      • es kann kein mean image erstellt werden
      • .mat Dateien werden von slice time ignoriert
      • Aber: erspart Interpolationsfehler. (Abhilfe: 7th degree B-spline statt 4th als Methode wählen)
25
Slice time correction
  • Ziel: Zeitdifferenz der Messung der einzelnen Schichten korrigieren
  • Reihenfolge:
    • eher als realignment, wenn interleaved
    • ansonsten nach realignment
  • Parameter:
    • ascending (1st = bottom slice) oder descending
    • interleaved (1,3,5,7....2,4,6,...)
  • Reference slice: mittlere Schicht (Default)


26
Slice time correction
  • Number of subjects /sessions angeben:
  • Bilder auswählen (alle *.img)
  • Order of slices :
    • Ascending: 1 2 3 4 ..24; 1:24
    • Interleaved: 1 3 5 … 2 4 6
  • TR angeben (Zeit zwischen 2 Scans)
  • TA angeben
    •     = Messbeginn des letzten slices. Bei kontinuierlicher Messung = (TR / # slices) * (# slices - 1)  (Default-Vorschlag von SPM)
  • Output: a*.img/.hdr/.mat
27
Slice time correction
28
Slice time correction
  • Prozedur:
    • berücksichtigt die gesamte Zeitreihe pro Voxel in einer Schicht
    • transformiert Zeitreihe in Frequenzraum (Fourier Transformation)
    • Phasenverschiebung um Zeit der Messung dieser Schicht
    • Rücktransformation in Zeitreihe
29
Slice time correction
  • Caveat 1: Orientierung
    • vorher Umorientieren kann problematisch sein
    • Umorientieren in SPM erzeugt nur .mat, wird von slice time ignoriert
  • Caveat 2: 1st = bottom slice:
    •    Wie weiß ich (Orientierung) was der Algorithmus als 1st ansieht?


    • + In "Display" template anzeigen lassen, die unterste axiale Schicht = 1st
    • + Mit eigenen Analyze-Rohdaten vergleichen


30
Orient functionals
  • Mit MRIcro problematisch
    • Jede Datei einzeln
  • SPM2 => Display
    • Geht für beliebig viele Dateien
    • Problem: Schreibt Bildchen nicht neu, sondern legt nur eine Parameter-Datei (.mat-File) an.
    • Bilder neuschreiben: es gibt Tools, z.B. Volumes toolbox


31
Orient functionals
32
 
33
Coregistration
  • Verschieben von Anat zu func
    • nach realign sind func Bilder an Position des 1.
    • nach coreg gilt das auch für das anat. Bild
  • R=R/R=L (in den Defaults) beachten!
    • hack in spm_defaults.m, nicht über Menü!
  • Auswählen: Coreg only
  • Bilder wählen
    • Target (Erstes funktionelles Bild)
    • Source (Anatomisches Bild)
    • Other images: "Done" wählen
34
Coregistration
35
Coregistration
  • Output:
    • wenn nur coreg: anat_xx.mat
      wenn mit reslice: auch anat_xx.img/.hdr
      im Verzeichnis des anatomischen Bildes (wenn nicht, unschlau!)
    • eine (wenig nützliche) Graphik (spm.ps)
      besser: 'Check Reg'

36
Coregistration
  • Prozeduren:
    • (Problem: Kontrast sehr verschieden: T1 vs. T2*)
    • berechne (6) parameter für rigid body transformation (keine Verzerrungen!)
    • wenn Verzerrung, andere Software benutzen!
    • 2 Verfahren:
      • SPM2: verschiedene Arten MI (mutual information)
        • i.d.R. gute Ergebnisse
      • SPM99: Segmentation & MI
        • Segmentieren von anat und func in white/grey matter
        • Coreg beider Teile zueinander
    • Beides gut, aber nicht immer erfolgreich
37
Coregistration
  • Check!


  • 'Display'
    • nur 1 Bild darstellbar

  • 'Check Reg'
    • 2 (bis 15) Bilder

38
Coregistration
  • Achten auf:
    • Gehirngrenzen
    • Gehirngröße
      (Normalisierung)
    • Ventrikellage
    • rechts/links
39
Coregistration
  • Caveat 1:
    • für coreg und norm muß die Orientierung func und anat in etwa stimmen (vgl. template)!
  • Caveat 2:
    • wenn an anat normalisiert wird muß Coreg anat zu func wirklich ok sein!
    • so nicht: Coreg in SPM2 mehrfach ausführen
    • Coreg auf andere Art ausführen (andere Option in SPM Defaults wählen)
    • Coreg in SPM99 auführen (Segmentierung)
40
Normalisierung
  • 2 Methoden:
    • am einfachsten:
      • normalisiere func an func template (check!)
        • anat & coreg werden gar nicht benötigt
        • geht nur, wenn func ohne Artefakte!
    • am sichersten:
      • coreg anat zu func (check!)
      • normalisiere anat an anat template (check!)
      • wende norm params auf func an (check!)
41
SPM Defaults (Menü)
42
SPM defaults (Menü)
  • Interpolationsmöglichkeiten:
    • optimal: 7th degree B-spline
    • default realign: 4th degree B-spline
    • default normalize: trilinear
  • Flip (R/L):
    • Hack in Zeile 28 von spm_defaults.m
      • defaults.analyze.flip     = 1;    (1="yes")

43
Normalisierung 1
  • Func an Func Template
    • schätze Parameter
      • am besten: schätze Params an func mean image
    • defaults: voxelgröße ändern (3 x 3 x 3)
    • write normalized
      • berücksichtigt .mat aus der moco (wenn ohne reslice)
      • write mean (zum checken), wenn ok, alle anderen.
  • Caveat:
    • Problematisch, wenn func viele schwarze Löcher hat  =>  Übernormalisierung (insbes. in SPM99)


44
Normalisierung 1
45
Normalisierung 1
  • Output: w*.img/.hdr
  • Ergebnis:      vgl. mit Coreg:
46
Normalisierung 2
  • 2. Methode: normalisiere über anat
    • coreg anat zu func (check!!!)
    • normalisiere anat an anat template
      • estimate parameters & write normalized
    • jeweils defaults/write norm. ändern
      • 1mm voxel füer anat, 3 mm voxel für func
    • die Anat parameter auf func anwenden
      • Parameter: anat_xx_sn.mat im anat Verzeichnis
      • nur: write normalized
      • erst auf func mean image anwenden (check!)
      • dann auf alle (dauert lange! 1h / VP)
47
Normalisierung 2
48
Normalisierung 2
  • Was tun, wenn es nicht klappt?
    • Größe stimmt nicht (Skull ist Problem)
    • Parameter in defaults - estimate params ändern
      • wenig erfolgreiche Fummelei
    • mit skulled Anat/Template versuchen
      • skull entfernen mit MRIcro
      • Template: SPM2 .mnc template format ist Problem für MRIcro. Alternative SPM99 template. Aber: SPM99 template hat andere R/L Orientierung! Vorher spiegeln
49
Normalisierung
  • Output: (prefix: w)
    • war_xx.img/.hdr
    • wenig nützliche Graphik
      • (besser: check reg!)
  • Templates:
    • Func: nur EPI.img (=Mittel aus 13 VPs)
    • Anat: egal
      • T1.img = Mittel aus 152 Hirnen
      • single_subj_T1.mnc (canonical) = Mittel aus mehreren scans einer VP) à für BA-Prob.maps aus Jülich
50
Normalisierung
  • nur affin (linear).
    • (Default: nichtlinear, 16 iterations)
    • linear = 12 Parameter
      • 6 rigid body transformation
      • 3 shears, 3 zooms
    • Defaults: parameter estimation
      • cutoff: affine only


51
Normalisierung
  • Caveat 1 (func an func):
    • Bei Signalausfällen Übergeneralisierung
      • cutoff verkleinern
      • nur affin normalisieren
  • Caveat 2 (func an anat):
      • coreg anat chechen
      • norm. anat checken (skull => Gehirngröße!)
      • Nachteil: kompliziertere Methode
      • Vorteil: Check mit individueller Anat möglich


52
Smoothing
  • Filtergröße angeben (in mm FWHM)
    • 2 bis 3 fache func voxelgröße
      • 3 fach ist ideal für Gültigkeit/Sensitivität der Statistik
    • abhängig von anat. Hypothesen!
      • klein: 3 bis 6 mm; groß: 10 bis 12 mm (3 mm voxel)
      • klein für kleine Strukturen (e.g. Hippocampus)
      • klein für Gebiete mit geringer anat. Variation
        • e.g., primäre sensorische/motorische Areale
      • groß für Gebiete mit hoher anat. Variation
        • e.g. frontale / parietale Gebiete
  • Scans auswählen


53
Smoothing
  • isotrop: z.B. 6 (= 6 x 6 x 6mm)
  • anisotrop: z.B. 6 6 10 (= 6 x 6 x10 mm)
  • Output: s*.img/.hdr
54
Smoothing
  • Caveat 1 (zu klein):
    • Coreg/Norm muss exakt stimmen
    • Motioncorrection sollte gut sein
    • Statistik nicht sehr sensitiv
    • Abgrenzung von Vogeldreck schwierig
  • Caveat 2 (zu groß):
    • Problem der Lokalisation / Abgrenzung
    • Gut für erste grobe Analyse
55
Prepro Ende
  • swar*.img/.hdr => in die Statistik
  • Zahl der Datensätze
    • bei 700 scans pro VP:
      • Rohdaten: 2*700
      • realign: 3*700, slice time: 3*700
      • norm: 2*700, smooth: 2*700
      • Total: 12*700 = 8400 Dateien!
    • Bottleneck: Festplattenzugriffszeit!
  • SPM2_neu: Analyze 4d oder .mnc ?
  • Zeitaufwendig: realign & normalize


56