Bevor wir die Daten auswerten, wollen wir uns zunächst mit den Daten vertraut machen. Das heißt, wir schauen Sie uns an.
Warum sollten wir das tun? Ein Grund könnte sein, dass wir lernen wollen, was allen an Informationen in den Daten steckt. Ein anderer Grund, dass wir lernen wollen, wie wir als menschliche Beobachterinnen diese Informationen nutzen. Erst danach sollten wir versuchen, unser intuitives Vorgehen zu formalisieren, also mit den Daten zu rechnen.
Ein weiterer Grund ist unser ultimates Ziel. Unser Ziel ist es, den verblindeten dritten run zu dekodieren. Wir könnten natürlich sofort damit anfangen, aber wir könnten auch ersteinmal üben Vorhersagen zu treffen. Wie bei der Kalibrierung eines Polygraphen könnte es eine gute Idee sein, zunächst Fragen zu stellen auf die wir die Antworten bereits kennen. Wir wissen Alles über die Daten in den ersten beiden runs, daher bieten diese sich zu Übungszwecken an.
Das heißt, wir können zwei Dinge tun:
Was ist der Unterschied? Bei der ersten Variante könnte es sein, dass wir interessante Muster finden, aber wir wissen nicht, wie gut unsere Vorsagen wären, wenn wir diese Muster oder Merkmale benutzen. Dabei kann man schnell in eine Denkweise verfallen, bei der man jeglichem zufälligem Rauschen Bedeutsamkeit zuschreibt.
Bei der zweiten Variante (verblindet) haben wir auch ein Maß dafür, wie prädiktiv die Muster oder Merkmale sein könnten. Wir kriegen Feedback darüber, was funktioniert und was nicht. Das ist eine gute Vorbereitung für die tatsächliche Vorhersage von run 3. Kurz gesagt: Die beste Übung um Vorhersagen zu treffen, ist Vorhersagen zu treffen.
Wir haben in dem Ordner "blindTraining" Hirnbilder von jedem Block, aber ohne die Namen. Die Namen stehen jeweils in der entsprechenden Textdatei. Ein mögliches Training wäre nun, sich ein Bild anzuschauen, eine Vorhersage zu treffen und dann die eigene Vorhersage mit Hilfe der hinterlegten Textdatei zu überprüfen.
In [1]:
# module um dateien zu lesen
import os
import fnmatch
In [2]:
# liste mit allen hirnbildern die im Ordner blindTraining liegen
imgList = ['../blindTraining/%s'%x for x in os.listdir('../blindTraining/') if fnmatch.fnmatch(x,'*.nii.gz')]
imgList.sort()
In [3]:
imgList
Out[3]:
Liste mit allen Antworten
In [4]:
# liste mit allen hirnbildern die im Ordner blindTraining liegen
codeList = ['../blindTraining/%s'%x for x in os.listdir('../blindTraining/') if fnmatch.fnmatch(x,'*.txt')]
codeList.sort()
In [5]:
codeList
Out[5]:
Wir haben von jedem Block drei Bilder:
In [6]:
from nilearn import plotting
import matplotlib.pylab as plt
%matplotlib inline
In [7]:
for img in imgList[:3]:
plotting.plot_stat_map(img,title=img)
plt.show()
Diese Bilder können wir uns z.B. mit fslview oder mricroGL anschauen; entweder einzeln oder kombiniert (so könnten wir auch etwas über den Effekt der Glättung auf unterschiedliche Regionen lernen).
In [8]:
%%bash
fslview ../data/wbet_mpr_2mm.nii.gz ../blindTraining/img001_s000.nii.gz ../blindTraining/img001_s008.nii.gz ../blindTraining/img001_s016.nii.gz
Danach können wir uns die Auflösung anschauen
In [9]:
%%bash
gedit ../blindTraining/ans001.txt
In [10]:
with open('../blindTraining/ans001.txt','r') as f:
print f.read()
Wie immer gilt: "anything goes". D.h. jede Art von Darstellung, Glättung und Schwellenwert sind erlaubt, ebenso Wikipedia, Neurosynth, Atlanten, Darstellung im Volumen oder auf der Hirnoberfläche etc. Eine weitere Hilfe könnten die gemittelten Hirnantworten pro Bedingung sein. D.h. es könnte Sinn machen zu schauen, wie eigentlich die 5-Minuten langen Mittlungen pro Bedingung aussehen. Zur Erinnerung: Diese liegen in
>> ../data/gemittelteHirnbilderSmoo.nii.gz
In [11]:
%%bash
fslview ../data/gemittelteHirnbilderSmoo.nii.gz -l Red-Yellow -b 0.2,1.0 ../data/wbet_mpr_2mm.nii.gz -l Grey -b 200,1000
Außerdem sind sie auch online auf neurovault.org
In [12]:
from IPython.display import IFrame
IFrame('http://www.neurovault.org/collections/2282/', width=800, height=600)
Out[12]: