Abschlussaufgabe „Biologische Datenanalyse und Simulation mit Matlab“ 2015 –
Abschlussaufgabe „Biologische Datenanalyse und Simulation mit Matlab“ 2015 –
Auswertungsmethoden für die Analyse neuronaler Messdaten
Spielregeln
- Die Abschlussaufgabe wird in Einzelarbeit gelöst!!!
- Hilfsmittel (z.B. Matlab-Hilfe, Wikipedia...) sind erlaubt (solange es sich nicht um andere Kursteilnehmer, den großen Bruder oder eine fertige aus dem Netz gezogene Lösung handelt).
- Bei Fragen stehen Eva und Helge (email-Adressen siehe stud.IP) und ich (jutta.kretzberg[at]uni-oldenburg.de, Raum W4-0-078, Tel 798 3314) zur Verfügung. Falls Sie Ihre Fragen im persönlichen Gespräch stellen wollen: bitte per email Termine absprechen! Gerne an alle drei Adressen mailen, eineR von uns wird dann antworten.
- Falls Ihr Programm nicht (oder nicht für alle möglichen Fälle) lauffähig ist, hätte ich gerne eine ausführliche Dokumentation, was nicht läuft.
- Lösungen müssen bis zum 25.10.2015 per email oder per Cloud Storage bei mir eingehen. Ich bestätige den Eingang der Lösung per email.
- Ich melde mich per email, wenn ich die Aufgaben nachgesehen habe und vergebe dann bei Bedarf Termine, an denen wir uns noch einmal kurz darüber unterhalten. (Das kann durchaus mehrere Monate dauern, bis ich alle Lösungen durchgesehen und verglichen habe. Falls Sie Ihre Note sehr dringend brauchen, sagen Sie bitte Bescheid.)
Kriterien für die Benotung
- Wie vollständig ist die Aufgabe gelöst? (Erweiterungen gegenüber der Grundaufgabe führen zur Notenverbesserung.)
- Programmiertechnische Umsetzung
- Grundideen des Lösungsansatzes
- Programmstruktur
- Umgang mit Daten
- Allgemeinheit / Fehlertoleranz
- "Eleganz" der Programmierung
- Wie benutzerfreundlich ist das Programm? (Kann man es auch ohne Programmierkenntnisse bedienen etc)
- Benutzerinteraktion
- Hilfetexte und Kommentare
- zusätzliche Dokumentation
Aufgabe 2015: Auswertungsmethoden für die Analyse neuronaler Messdaten
Download: pdf-Version und Word-Version der Aufgabe
Ihre Aufgabe ist es, zwei Auswertemethoden für die Analyse neuronaler Messdaten zu programmieren und diese mit einer ansprechenden Benutzerschnittstelle zu versehen.
Ich würde Ihnen raten, als erstes die Vorbereitungs-Aufgaben zu bearbeiten. Diese sollen nicht mit abgegeben werden, können Ihnen aber bei der Lösung der eigentlichen Aufgaben helfen. Dann sollten Sie für beide Methoden zunächst die Grundversion der Programme schreiben und erst wenn diese zu Ihrer Zufriedenheit laufen die Erweiterungen angehen.
Hintergrund:
Neurone (Nervenzellen) übertragen Informationen durch Änderungen ihrer Membranspannung. Sie kommunizieren miteinander, indem sie sogenannte Aktionspotentiale (auch Spikes genannt) auslösen. Das sind schnelle, stereotype Änderungen der Membranspannung, die ungefähr eine Millisekunde lang andauern. Da die Aktionspotentiale eines Neurons immer wieder sehr ähnlich aussehen, wird davon ausgegangen, dass nicht die genaue Form der Spannungsänderung entscheidend ist, sondern lediglich die Frage, ob eine solche Spannungsänderung aufgetreten ist oder nicht.
Aktionspotentiale werden unter anderem dazu genutzt, Informationen über visuelle Eindrücke (Bilder) vom Auge an das Gehirn zu übertragen. Im Gehirn muss dann mit Hilfe der Aktionspotentialsequenzen vieler Tausend retinaler Ganglienzellen herausgefunden werden wie das Bild aussah, das diese Antworten ausgelöst hat. Dadurch entsteht unser Eindruck des Sehens (bzw der des Versuchstieres).
In den Neurowissenschaften ist es eine wichtige Fragestellung, wie das Gehirn diese Aufgabe löst: Welche Eigenschaften der neuronalen Aktionspotentialsequenzen kodieren den Reiz? Die meisten Neurowissenschaftler gehen davon aus, dass insbesondere die Spikerate, also die Anzahl der Aktionspotentiale, die in einem Zeitraum bestimmter Länge auftreten, dabei eine wichtige Rolle spielt. Der Ansatz ist also, einen Zusammenhang zwischen einem Reizparameter (in unserem Fall ist es die Geschwindigkeit und Richtung eines bewegten Punktmusters) und der neuronalen Antwort, gemessen als Anzahl Spikes in einem Zeitfenster, zu finden.
Datensatz:
Bei den in der Matrix [CellResp.mat] abgespeicherten Beispieldaten handelt es sich um echte Messungen der Antworten von retinalen Ganglienzellen. In diesem Datensatz sind die gleichzeitig aufgenommenen Antworten von 20 retinalen Ganglienzellen abgelegt. Die Aufnahme dauerte 180 Sekunden und wird in der Matrix in Schritten von 1 ms Länge dargestellt. In der Matrix gibt es nur zwei verschiedene Werte: Wenn an der Stelle CellResp(17, 3089) eine 1 steht bedeutet das, dass das Neuron mit der Nummer 17 im Zeitschritt 3089 ein Aktionspotential ausgelöst hat. Steht dort eine 0, hat es zu dieser Zeit kein Aktionspotential gegeben. (Sie werden sehen, dass es sehr viel mehr Nullen als Einsen gibt)
Diese Antworten wurden durch ein bewegtes Punktmuster ausgelöst. Dieses Muster bewegte sich jeweils für 500 ms mit einer konstanten Geschwindigkeit in eine konstante Richtung. Danach änderte es zufällig seine Geschwindigkeit und manchmal auch seine Richtung, um wiederum für 500 ms gleich zu bleiben. Die Bewegung erfolgte jeweils in einer von 9 möglichen Geschwindigkeiten:
-2.5, - 1.875, -1.25, -0.625, 0, 0.625, 1.25, 1.875, 2.5 [mm/s]
Das Vorzeichen zeigt dabei an, in welche der beiden möglichen Richtungen (links oder rechts) sich das Muster bewegt hat. 0 bedeutet, dass das Muster gestanden hat. Die Abfolge der Reizbewegung ist im Vektor [StimVec.mat] abgespeichert. Jede Zahl in diesem Vektor steht für eine 500ms lang andauernde Reizung aller 20 Zellen des Datensatzes.
Vorbereitung (diese Aufgaben sollen nicht abgegeben werden):
Ich würde vorschlagen, dass Sie sich vor Beginn der eigentlichen Aufgaben erstmal etwas mit dem Datensatz vertraut machen. Das ist insofern nicht ganz so einfach, als der Datensatz ziemlich groß ist. Berechnen Sie zur Übung:
- Wie viele Aktionspotentiale hat jedes der Neurone insgesamt erzeugt?
- Wie viele Aktionspotentiale hat jedes der Neurone innerhalb der ersten 500 ms (also während der ersten Präsentation einer konstanten Geschwindigkeit) erzeugt?
- Wie viele Aktionspotentiale haben alle Neurone zusammen während der ersten 500 ms erzeugt?
- Wurden in diesem Zeitraum mehr Aktionspotentiale in der ersten oder in der zweiten 250 ms langen Hälfte erzeugt?
- Wie oft wurde jede der 9 verschiedenen Geschwindigkeiten präsentiert?
- Erzeugen Sie einen Vektor, der in Millisekunden-Zeitschritten die jeweils vorliegende Geschwindigkeit enthält und stellen Sie diesen grafisch dar. (Welche Länge muss er haben?) Sehen Sie sich auch die ersten 10 Sekunden als Vergrößerung an.
- Wie viele Aktionspotentiale hat das dritte Neuron erzeugt, als zum ersten Mal der Stimulus -2.5 gezeigt wurde?
- Wie viele Aktionspotentiale hat das dritte Neuron bei jeder der Präsentationen der Geschwindigkeit -2.5 erzeugt?
Aufgabe1: Zeitverlauf der Antworten: Rasterplot und Populationsantworten
Die Neurone Antworten auf die Reizung mit dem bewegten Punktmuster mit einer zeitlichen Abfolge von Aktionspotentialen.
Ein Rasterplot zeigt durch einzelne Striche oder Punkte grafisch an, wann ein bestimmtes Neuron Aktionspotentiale generiert hat (x-Achse: Zeit, y-Achse: Aktionspotential oder nicht für jede der betrachteten Zellen).
Unter einer Populationsantwort versteht man die über alle bekannten Neurone gemittelte Antwort (Anzahl Aktionspotentiale in einem bestimmten Zeitfenster) auf eine Reizung. Es wird dabei davon ausgegangen, dass es unerheblich ist, welches Neuron welches Aktionspotential generiert hat. Zur Berechnung der Populationsantwort werden innerhalb eines Zeitfensters die 1 / 0 – Antworten der Neurone aufsummiert und dann so normiert, dass sich die Einheit „Aktionspotentiale / Sekunde“ ergibt. Dieses Zeitfenster wird über den Zeitverlauf der Antworten geschoben, so dass sich insgesamt der Zeitverlauf der Populationsantwort ergibt.
A1a) Schreiben Sie ein Programm, das für einen frei wählbaren Zeitausschnitt die neuronalen Antworten grafisch als Rasterplot darstellt.
A1b) Schreiben Sie ein Programm, das für einen frei wählbaren Zeitausschnitt und ein frei wählbares Summations-Zeitfenster den Zeitverlauf der gemeinsamen Populationsantwort aller Neurone berechnet und grafisch ausgibt.
A1c) Kombinieren Sie die Darstellung des Rasterplots und der Populationsantwort mit der Darstellung des Zeitverlaufs der Reizgeschwindigkeit, so dass man grafisch sehen kann, welche Art von Reizung viele und welche wenige Aktionspotentiale auslöst.
Aufgabe2: Tuningkurven
Eine Tuningkurve gibt an, wie die Anzahl der von einem Neuron ausgelösten Aktionspotentiale von einer Stimuluseigenschaft abhängt. In unserem Fall möchten wir also für jede der 9 Geschwindigkeiten herausbekommen, wie viele Aktionspotentiale ein Neuron typischer Weise als Antwort während der 500 ms langen Reizung generiert.
A2a) Schreiben Sie eine Funktion, die für ein einzelnes Neuron grafisch Mittelwert und Standardabweichung der Antworten (Anzahl der während der Dauer eines Reizes generierten Aktionspotentiale) gegen die Werte der Geschwindigkeit des Reizmusters aufträgt. Denken Sie dabei daran, dass die Antworten auf alle Präsentationen des gleichen Reizes zusammengefasst werden müssen.
A2b) Man kann die Tuningkurven der Neurone grob in drei Klassen unterteilen: Neurone mit symmetrischem Tuning (etwa gleiche Spikeraten für Bewegung in beide Richtungen) und richtungssensitive Neurone (die auf Bewegung in eine der Richtungen mit mehr Spikes antworten) die bevorzugt auf Bewegung nach rechts bzw. Bewegung nach links antworten. Überlegen Sie sich ein Kriterium und einen Weg der automatischen Klassifikation, um die 20 einzelnen Neuronen jeweils einer der drei Klassen zuzuordnen.
Aufgabe3: Benutzerinteraktion
A3a) Schreiben Sie ein Programm, das die Interaktion mit dem Benutzer steuert. Der Nutzer soll auswählen können, welche Art der Auswertung er durchführen will und Einflussmöglichkeiten auf die Parameter der Auswertung haben. (Z.B. Wahl des Mittelungs-Zeitfensters für die Populationsantwort, Darstellung einzelner oder auch aller Tuningkurven etc...) Denken Sie daran, dass ein typischer Benutzer keine Programmierkenntnisse hat.
Hinweise und Erweiterungsmöglichkeiten
Generell:
- a) Denken Sie daran, Ihre Programme möglichst allgemein zu halten. Sie sollten so geschrieben sein, dass sie mit möglichst wenig nachträglichem Aufwand auch für den nächsten Datensatz verwendbar sein sollten. Dieser kann z.B. eine andere Anzahl Zellen, andere Abfolge der Stimulation oder Stimuli anderer Länge enthalten.
- b) Schreiben Sie Ihre Programme so, dass sie für den Benutzer angenehm zu benutzen sind. Überlegen Sie sich, was für den Benutzer an Ausgaben interessant sein könnte und an welchen Stellen er durch Angabe von Werten Einfluss auf den Programmablauf nehmen sollte. Erklären Sie dem Benutzer jeweils, was Sie von ihm erwarten und wie er die Ausgaben des Programms interpretieren soll.
- c) Sonder-Zusatzaufgabe: Wenn Sie viel Zeit und Interesse daran haben, können Sie eine grafische Benutzeroberfläche programmieren. Das Stichwort für die Hilfe ist GUI (graphical user interface), es gibt dort ein tutorial, in dem gezeigt wird, wie es geht – das ist allerdings nicht ganz einfach und braucht sicher einiges an Zeit. (Das ist auch für ein “sehr gut“ absolut nicht nötig.)
Tuningkurven:
- d) Betrachten Sie die Verteilungen der Antworten einzelner Neurone auf wiederholte gleiche Reizung. Ist es für die Tuningkurven dieser Neurone sinnvoller den Median zu verwenden als den Mittelwert?
- e) Das Tuning muss sich nicht unbedingt auf den gesamten Antwortzeitraum auf einen Reiz beziehen. Verallgemeinern Sie Ihre Programme so, dass auch kürzere Zeitfenster (z.B. nur die jeweils ersten 100 ms nach Reizänderung) verwendet werden können. Unterscheidet sich das Tuning für verschiedene Fensterlängen? Unterscheidet es sich, wenn man nicht den Beginn, sondern jeweils das Ende der Antworten betrachtet (also z.B. die jeweils letzten 100 ms)?
Populationsantwort:
- f) Variieren Sie systematisch die Länge des zur Mittelung benutzten Zeitfensters. Sieht man eine zeitliche Antwortstruktur auch innerhalb der 500 ms langen Blöcke jeweils gleicher Reizung? Was ist das kürzeste Zeitfenster, für das man die Methode noch sinnvoll anwenden kann?
- g) Erstellen Sie drei separate Populationsantworten für die Population der Zellen mit symmetrischem Tuning und für die links- bzw. rechts-selektiven Populationen, die Sie in Aufgabe A2b) identifiziert haben.
- h) Bestimmen Sie für die 9 verschiedenen Reizgeschwindigkeiten die ‚typische Populationsantworten’, indem Sie die Populationsantworten auf alle Präsentationen des jeweiligen Reizes mitteln. Nutzen Sie dafür relativ kurze Summations-Zeitfenster (z.B. 20 ms oder 50 ms), um einen Zeitverlauf zu sehen. Besonders interessant ist der Vergleich der Populationsantworten der drei Populationen mit verschiedenem Tuning (links, rechts, symmetrisch)
- i) Überlegen Sie sich einen Weg, wie man mit Hilfe dieser mittleren Zeitverläufe für jeden der 9 Geschwindigkeitswerte die Populationsantwort auf einen einzelnen Reiz klassifizieren kann. Stellen Sie sich also die gleiche Aufgabe wie das Gehirn und versuchen Sie anhand der Populationsantwort auf einen Reiz herauszubekommen, um welchen Reiz es sich handelt. Machen Sie eine Statistik darüber, wie oft Ihr Programm den richtigen Reiz erraten kann.