\documentclass{beamer} \usepackage{xcolor} \usepackage{listings} \usepackage{pgf} %\usepackage{pgf,pgfarrows,pgfnodes,pgfautomata,pgfheaps,pgfshade} %\usepackage{multimedia} \usepackage[english]{babel} \usepackage{movie15} \usepackage[latin1]{inputenc} \usepackage{times} \usepackage{amsmath} \usepackage{bm} \usepackage[T1]{fontenc} \usepackage[scaled=.90]{helvet} \usepackage{scalefnt} \usepackage{tikz} \usepackage{ textcomp } \usepackage{soul} \usepackage{hyperref} \definecolor{lightblue}{rgb}{.7,.7,1.} \definecolor{mygreen}{rgb}{0,1.,0} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \mode { \usetheme{Singapore} \setbeamercovered{opaque} \usecolortheme{tuebingen} \setbeamertemplate{navigation symbols}{} \usefonttheme{default} \useoutertheme{infolines} % \useoutertheme{miniframes} } \AtBeginSection[] { \begin{frame} \begin{center} \Huge \insertsectionhead \end{center} % \frametitle{\insertsectionhead} % \tableofcontents[currentsection,hideothersubsections] \end{frame} } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 \setbeamertemplate{blocks}[rounded][shadow=true] \title[]{Scientific Computing -- Grundlagen der Programmierung } \author[]{Jan Grewe\\Abteilung f\"ur Neuroethologie\\ Universit\"at T\"ubingen} \institute[Wissenschaftliche Datenverarbeitung]{} \date{12.10.2015 - 06.11.2015} %\logo{\pgfuseimage{../../resources/UT_BM_Rot_RGB.pdf}} \subject{Einf\"uhrung in die wissenschaftliche Datenverarbeitung} \vspace{1em} \titlegraphic{ \includegraphics[width=0.5\linewidth]{../../resources/UT_WBMW_Rot_RGB} } %%%%%%%%%% configuration for code \lstset{ basicstyle=\ttfamily, numbers=left, showstringspaces=false, language=Matlab, commentstyle=\itshape\color{darkgray}, keywordstyle=\color{blue}, stringstyle=\color{green}, backgroundcolor=\color{blue!10}, breaklines=true, breakautoindent=true, columns=flexible, frame=single, captionpos=b, xleftmargin=1em, xrightmargin=1em, aboveskip=10pt } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\mycite}[1]{ \begin{flushright} \tiny \color{black!80} #1 \end{flushright} } \newcommand{\code}[1]{\texttt{#1}} \input{../../latex/environments.tex} \makeatother \begin{document} \begin{frame}[plain] \frametitle{} \vspace{-1cm} \titlepage % erzeugt Titelseite \end{frame} \begin{frame} \frametitle{Grundlagen der Programmierung} \frametitle{Tagesmen\"u} \begin{enumerate} \item Graphische Darstellung von Daten \item Spiketrain Analyse \end{enumerate} \end{frame} \begin{frame}[plain] \huge{1. Graphische Darstellung von Daten}\pause \begin{figure} \includegraphics[width=0.9\columnwidth]{images/convincing} \end{figure} \end{frame} \begin{frame} \frametitle{Graphische Darstellung von Daten} \framesubtitle{Was soll ein Datenplot erreichen?} \begin{itemize} \item Ist eine m\"oglichst neutrale Darstellung der Daten. \item Soll dem Leser die Daten greifbar machen und die Aussagen der Analyse darstellen. \item Erlaubt dem Leser die gezeigten Effekte selbst zu beguachten und zu validieren. \item Muss vollst\"andig annotiert sein. \item Folgt dem Prinzip der \textbf{ink minimization}. (Das Verh\"altnis aus Tinte, die f\"ur die Darstellung der Daten gebraucht wird und der Menge Tinte, die f\"ur die Graphik ben\"otigt wird sollte m\"oglichst gro{\ss} sein ) \end{itemize} \end{frame} \begin{frame} \frametitle{Graphische Darstellung von Daten} \framesubtitle{Was sollte vermieden werden?} \begin{itemize} \item Suggestive oder gar fehlleitende Darstellung. \item Ablenkung durch unruhige oder \"uberm\"a{\ss}ige Effekte. \item Comicartige Effekte... \end{itemize}\pause \begin{figure} \includegraphics[width=0.35\columnwidth]{images/one_d_problem_c} \end{figure}\pause ... aus{\ss}er sie werden rein zur Illustration benutzt ohne einen Anspruch auf Richtigkeit zu erheben. \end{frame} \begin{frame} \frametitle{Graphische Darstellung von Daten} \framesubtitle{Suboptimale Beispiele} \only <1> { \begin{figure} \includegraphics[width=0.5\columnwidth]{images/nobelbad} \end{figure} \vspace{0.25cm} Aus Hafting et al., Nature, 2005 } \only <2> { \begin{figure} \includegraphics[width=0.7\columnwidth]{images/misleading_pie} \end{figure} \vspace{0.5cm} \url{https://en.wikipedia.org/wiki/Misleading_graph} } \only <3> { \begin{figure} \includegraphics[width=0.7\columnwidth]{images/sample_pie} \end{figure} \vspace{0.5cm} \url{https://en.wikipedia.org/wiki/Misleading_graph} } \only <4> { \begin{figure} \includegraphics[width=0.3\columnwidth]{images/badbarright} \end{figure} \vspace{0.5cm} \url{https://en.wikipedia.org/wiki/Misleading_graph} } \only <5> { \begin{figure} \includegraphics[width=0.3\columnwidth]{images/badbarleft} \end{figure} \vspace{0.5cm} \url{https://en.wikipedia.org/wiki/Misleading_graph} } \only <6> { \begin{figure} \includegraphics[width=0.8\columnwidth]{images/badbarplot} \end{figure} \vspace{0.5cm} \url{https://en.wikipedia.org/wiki/Misleading_graph} } \only <7> { Wahl der Zeichenfl\"ache kann den visuellen Eindruck beeinflu{\ss}en. \begin{columns} \begin{column}{4.cm} \begin{figure} \includegraphics[width=0.7\columnwidth]{images/line_graph1} \end{figure} \end{column} \begin{column}{4.cm} \begin{figure} \includegraphics[width=0.7\columnwidth]{images/line_graph1_3} \end{figure} \end{column} \begin{column}{4.cm} \begin{figure} \includegraphics[width=0.7\columnwidth]{images/line_graph1_4} \end{figure} \end{column} \end{columns} \vspace{0.5cm} \url{https://en.wikipedia.org/wiki/Misleading_graph} } \only <8> { Vorsicht bei der Skalierung von Symbolen! \begin{columns} \begin{column}{4.cm} \begin{figure} \includegraphics[width=0.7\columnwidth]{images/improperly_scaled_graph} \end{figure} \end{column} \begin{column}{4.cm} \begin{figure} \includegraphics[width=0.7\columnwidth]{images/properly_scaled_graph} \end{figure} \end{column} \begin{column}{4.cm} \begin{figure} \includegraphics[width=0.7\columnwidth]{images/comparison_properly_improperly_graph} \end{figure} \end{column} \end{columns} \vspace{0.5cm} \url{https://en.wikipedia.org/wiki/Misleading_graph} } \end{frame} \begin{frame}[fragile] \frametitle{Graphische Darstellung von Daten} \framesubtitle{Plotting Interfaces in Matlab} Es gibt zwei Wege Graphen zu bearbeiten: \begin{enumerate} \item Interaktiv \"uber das \textit{graphische User Interface}\pause \item Die Kommandozeile bzw. in Skripten und Funktionen.\pause \end{enumerate} Beides hat seine Berechtigung und seine eigenen Vor- und Nachteile. Welche? \end{frame} \begin{frame} \frametitle{Graphische Darstellung von Daten} \framesubtitle{Ver\"anderung des Graphen \"uber die Kommandozeile} \begin{itemize} \item Erstellt ein Skript, dass einen Plot erstellt. \item Dieser soll zwei Sinus unterschiedlicher Frequenz darstellen. \end{itemize} Wir werden jetzt die Kommandozeil bzw. das Skript verbessern um den Plot ``sch\"oner'' zu machen. \end{frame} \begin{frame} \frametitle{Graphische Darstellung von Daten} \framesubtitle{Ver\"anderung des Graphen \"uber die Kommandozeile} \begin{enumerate} \item Einstellungen der Linienplots: \begin{itemize} \item St\"arke und Farbe. \item Linienstil, Marker. \end{itemize}\pause \item Achsbeschriftung: \begin{itemize} \item \code{xlabel}, \code{ylabel}. \item Schriftart und Gr\"o{\ss}e. \end{itemize}\pause \item Achsenskalierung und Ticks: \begin{itemize} \item Skalierung der Achsen (Minumum und Maxmimum, logarithmisch oder linear). \item Manuelles Setzen der Ticks, ihrer Richtung und Beschriftung. \item Grid or no Grid? \end{itemize}\pause \item Setzen von globalen Parametern: \begin{itemize} \item Einstellung der Papiergr\"o{\ss}e und plzieren der Zeichenfl\"ache. \item Box oder nicht? \item Speichern der Abbildung als pdf. \end{itemize} \end{enumerate} \end{frame} \begin{frame} [fragile] \frametitle{Graphische Darstellung von Daten} \framesubtitle{Ver\"andern von Eigenschaften \"uber die Kommandozeile} \vspace{-0.75em} \scriptsize \begin{lstlisting} fig = figure(); set(gcf, 'PaperUnits', 'centimeters', 'PaperSize', [11.7 9.0]); set(gcf, 'PaperPosition',[0.0 0.0 11.7 9.0], 'Color', 'white') hold on plot(time, neuronal_data, 'color', [ 0.2 0.5 0.7], 'linewidth', 1.) plot(spike_times, ones(size(spike_times))*threshold, 'ro', 'markersize', 4) line([time(1) time(end)], [threshold threshold], 'linestyle', '--', 'linewidth', 0.75, 'color', [0.9 0.9 0.9]) ylim([0 35]) xlim([0 2.25]) box('off') xlabel('time [s]', 'fontname', 'MyriadPro-Regular', 'fontsize', 10) ylabel('potential [mV]', 'fontname', 'MyriadPro-Regular', 'fontsize', 10) title('pyramidal cell', 'fontname', 'MyriadPro-Regular', 'fontsize', 12) set(gca, 'TickDir','out', 'linewidth', 1.5, 'fontname', 'MyriadPro-Regular') saveas(fig, 'spike_detection.pdf', 'pdf') \end{lstlisting} \end{frame} \begin{frame} [fragile] \frametitle{Graphische Darstellung von Daten} \framesubtitle{Ver\"andern von Eigenschaften \"uber die Kommandozeile} \begin{figure} \centering \includegraphics[width=0.75\columnwidth]{./images/spike_detection} \end{figure} \end{frame} \begin{frame} [fragile] \frametitle{Graphische Darstellung von Daten} \framesubtitle{Welche Art Plot wof\"ur?} \url{http://www.mathworks.de/discovery/gallery.html} \end{frame} \begin{frame} [fragile] \frametitle{Graphische Darstellung von Daten} \framesubtitle{Was macht einen guten Abbildung aus?} \begin{enumerate} \item Klarheit. \item Vollstaendige Beschriftung. \item Deutliche Unterscheidbarkeit von Kurven. \item Keine suggestive Darstellung. \item Ausgewogenheit von Linienst\"arken Schrift- und Plotgr\"o{\ss}e. \item Fehlerbalken, wenn sie angebracht sind. \end{enumerate} \end{frame} \begin{frame}[plain] \huge{2. Spiketrain Analyse} \end{frame} \begin{frame} \frametitle{Spiketrain Analyse} \framesubtitle{Rasterplot} \begin{figure} \centering \includegraphics[width=0.375\columnwidth]{images/rasterplot} \end{figure} \end{frame} \begin{frame} \frametitle{Spiketrain Analyse} \framesubtitle{Rasterplot} \"Ubung: \begin{enumerate} \item Ladet die Datei: \code{lifoustim.mat} aus dem Ilias Ordner. \item Der Datensatz enth\"alt die Zeiten von Aktionspotentialen. \item Erzeugt einen sch\"onen Rasterplot der Zellantworten, speichert ihn. \item Welche Information liefert er, welche Information ist schwer abzulesen? \end{enumerate} \end{frame} \begin{frame} \frametitle{Spiketrain Analyse} \framesubtitle{Zeitabh\"angige Feuerrate, PSTH} Darstellung der Feurreate eines Neuron als Funktion der Zeit. Es gibt verschiedene Methoden dieses \textbf{P}eri \textbf{S}timulus \textbf{T}ime \textbf{H}istogram zu erstellen. \begin{enumerate} \item Auf Basis der \textit{instantanen} Feuerrate. \item Auf Basis des Zeithistogramms. \item Durch Faltung der Zellantwort mit einem Gauss Kern. \end{enumerate} \end{frame} \begin{frame} \frametitle{Spiketrain Analyse} \framesubtitle{Zeitabh\"angige Feuerrate, PSTH --- Instantane Feuerrate ---} \Large{Berechnung des PSTHs durch die Instantane Feurerrate:} \normalsize \begin{enumerate} \item Die Feuerrate kann aus dem Abstand zwischen zwei aufeinanderfolgenden Aktionspotentialen (\textbf{Interspikeinterval}) berechnet werden. \pause \item Die \textbf{Instantane Feuerrate} wird aus dem Kehrwert des Interspikeintervals berechnet. \end{enumerate} \end{frame} \begin{frame} \frametitle{Spiketrain Analyse} \framesubtitle{Zeitabh\"angige Feuerrate, PSTH --- Instantane Feuerrate ---} \begin{figure} \centering \includegraphics[width=0.9\columnwidth]{images/instantaneous_rate} \end{figure} \end{frame} \begin{frame} \frametitle{Spiketrain Analyse} \framesubtitle{Zeitabh\"angige Feuerrate, PSTH --- Instantane Feuerrate ---} Berechnung des PSTHs durch die Instantane Feurerrate: \textbf{Vorteile:} \begin{enumerate} \item Sehr einfach zu Berechnen. \item Macht keine Annahmen \"uber ein Zeitraster, oder die Zeitskala der neuronalen Verarbeitung. \end{enumerate} \textbf{Nachteile:} \begin{enumerate} \item Die Feuerrate ist nie null, auch wenn f\"ur lange Zeit kein Aktionspotential auftritt. \item Verh\"alt sich im Fourrier Raum nicht sehr sch\"on. \end{enumerate} \end{frame} \begin{frame} \frametitle{Spiketrain Analyse} \framesubtitle{Zeitabh\"angige Feuerrate, PSTH --- Binning Methode ---} \Large{Binning Methode:} \normalsize \begin{enumerate} \item Die Zeitachse wird in gleich gro{\ss}e Abschnitte ``bins'' unterteilt. \item F\"ur jedes ``bin'' wird die Anzahl vorkommender Aktionspotentiale gez\"ahlt. \item Der Spike-count pro bin muss nun noch in die Rate umgerechnet werden. \end{enumerate} \end{frame} \begin{frame} \frametitle{Spiketrain Analyse} \framesubtitle{Zeitabh\"angige Feuerrate, PSTH --- Binning Methode ---} \begin{figure} \includegraphics[width=0.9\columnwidth]{images/binned_rate} \end{figure} \end{frame} \begin{frame} \frametitle{Spiketrain Analyse} \framesubtitle{Zeitabh\"angige Feuerrate, PSTH --- Binning Methode ---} Berechnung des PSTHs durch die Binning Methode: \textbf{Vorteile:} \begin{enumerate} \item Sehr einfach zu Berechnen. \item Zeigt nur da Aktivit\"at an, wo auch Aktionspotentiale generiert wurden. \end{enumerate} \textbf{Nachteile:} \begin{enumerate} \item Mach Annahmen \"uber die relevante Zeitskala neuronaler Verarbeitung. \item Die Zeitachse wird diskretisiert. \item Verh\"alt sich im Fourrier Raum nicht sehr sch\"on. \end{enumerate} \end{frame} \begin{frame}[fragile] \frametitle{Spiketrain Analyse} \framesubtitle{Zeitabh\"angige Feuerrate, PSTH --- Faltungsmethode ---} \Large{Faltung mit einem Gauss Kern:} \normalsize \[r_{est}(t) = \int_{-\infty}^{\infty}d\tau \omega(\tau)\rho(t-\tau) \] wobei $\omega(\tau)$ der Gauss Kern und $\rho(t)$ die Antwortfunktion ist. Gl\"ucklicherweise m\"ussen wir das nicht selbst implementieren... \end{frame} \begin{frame}[fragile] \frametitle{Spiketrain Analyse} \framesubtitle{Zeitabh\"angige Feuerrate, PSTH --- Faltungsmethode ---} \large Algortihmus: \normalsize \begin{enumerate} \item Die neuronalen Antworten werden ``bin\"ar'' ausgedr\"uckt. \item Ein Filterkern wird berechnet, der das Integral 1 hat. \item Mithilfe der Faltung (\code{conv} Funktion) wird jede 1 durch den ``Kern'' ersetzt.\\ \code{conv(x, kern, 'mode', 'same')} \end{enumerate} \end{frame} \begin{frame} \frametitle{Spiketrain Analyse} \framesubtitle{Feurerrate als Funktion der Zeit --- Faltungsmethode ---} \begin{figure} \includegraphics[width=0.9\columnwidth]{images/convolved_rate} \end{figure} \end{frame} \begin{frame} \frametitle{Spiketrain Analyse} \framesubtitle{Feurerrate als Funktion der Zeit --- Faltungsmethode ---} \textbf{Vorteile:} \begin{enumerate} \item Sehr ``nat\"urliche'' erscheinende Darstellung. \item Sehr gutes Verhalten im Fourrier Raum. \end{enumerate} \textbf{Nachteile:} \begin{enumerate} \item Relativ rechenintensiv. \item Macht Annahmen \"uber die Zeitskalen neuronaler Verarbeitung. \end{enumerate} \end{frame} \begin{frame}[plain] \huge{3. Analyse der Beziehung zwischen Stimulus und Antwort} \end{frame} \begin{frame}[fragile] \frametitle{Spiketrain Analyse} \framesubtitle{Spike-Triggered-Average} \begin{itemize} \item[] Die Antworten darzustellen ist gut und sch\"on, aber was sagt es uns?\pause \item[] Idealerweise wollen wir die Antworten in Beziehung zum hervorrufenden Stimulus setzen. \item[] Eine Methode ist der sogenannte \textbf{Spike-Triggered-Average} (STA). \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{Spiketrain Analyse} \framesubtitle{Spike-Triggered-Average} Der STA stellt den (mittleren) Stimulus dar, der zu einem Aktionspotential gef\"uhrt hat: \begin{equation} STA(\tau) = \frac{1}{\langle n \rangle} \left\langle \displaystyle\sum_{i=1}^{n}{s(t_i - \tau)} \right\rangle \end{equation} Wobei: $\tau$ ist eine bestimmte Zeit relativ zur Zeit eines Aktionspotentials, $t_i$ ist der Zeitpunkt eines APs, $s(t)$ ist der Stimulus.\\ Leider m\"ussen wir das selbst implementieren... \end{frame} \begin{frame}[fragile] \frametitle{Spiketrain Analyse} \framesubtitle{Spike-Triggered-Average} \large{Algorithmus:} \normalsize \begin{enumerate} \item Der \textbf{STA} ist der mittlere Stimulus, der zu einem Aktionspotential f\"uhrt. \item F\"ur jeden Spike wird ein entsprechender Abschnitt um die Zeit des Spikes herausgeschnitten. \item Die einzelen Stimulussegmente werden gemittelt. \end{enumerate}\pause \begin{figure} \centering \includegraphics[width=0.5\columnwidth]{images/sta} \end{figure} \end{frame} \begin{frame}[fragile] \frametitle{Spiketrain Analyse} \framesubtitle{Spike-Triggered-Average} \vspace{-1em} \begin{figure} \centering \includegraphics[width=0.6\columnwidth]{images/sta} \end{figure} \pause \vspace{-0.5em} Welche Information liefert der \textbf{STA}? \small \begin{enumerate} \item Gibt es eine Beziehung zwischen Stimulus und Antwort?\pause \item Gibt es eine Verz\"ogerung zwischen Stimulus und Antwort? Wie gro{\ss} ist diese?\pause \item Wie weit h\"angt das Auftreten eines Aktionspotentials von der Vergangenheit ab? \pause \item Kann die Zelle in die Zukunft sehen? \end{enumerate} \end{frame} \end{document} \begin{frame} [fragile] \frametitle{Spiketrain Analyse} \framesubtitle{\"Ubung} \begin{enumerate} \item Berechnet die Feuerrate eines Neurons mit einer der drei Methoden. \item Die Abbildung soll f\"ur eine einspaltige Abbildung im \textit{Journal of Neuroscience} geeignet sein (\url{http://www.jneurosci.org/site/misc/ifa_illustrations.xhtml}). \item Erzeugt/ver\"andert/erweitert das Programm zum plotten so, dass die Abbildung automatisch erstellt und gespeichert wird. \item Speichert die Abbildung als pdf. \item Ladet den Stimulus aus dem Ilias Ordner und benutzt die \verb+subplot+ Funktion um den Stimulus zu der neuronalen Aktivit\"at zu plotten. \end{enumerate} \end{frame}