Merge branch 'master' of raven:scientificComputing

This commit is contained in:
Jan Benda 2015-10-28 09:16:38 +01:00
commit 47428050da
16 changed files with 816 additions and 301 deletions

View File

@ -1,5 +1,5 @@
TEXFILES=$(wildcard *.tex)
TEXFILES=boolean_logical_indexing.tex control_structures.tex data_structures.tex plotting_spike_trains.tex programming_basics.tex scripts_functions.tex sta_stc.tex variables_datatypes.tex vectors_matrices.tex
TEXFILES=boolean_logical_indexing.tex control_structures.tex data_structures.tex plotting.tex programming_basics.tex scripts_functions.tex sta_stc.tex variables_datatypes.tex vectors_matrices.tex
PDFFILES=$(TEXFILES:.tex=.pdf)

Binary file not shown.

View File

@ -101,10 +101,9 @@
\begin{frame}
\frametitle{Grundlagen der Programmierung}
\frametitle{Tagesmen\"u}
\frametitle{Inhalt}
\begin{enumerate}
\item Graphische Darstellung von Daten
\item Spiketrain Analyse
\end{enumerate}
\end{frame}
@ -356,288 +355,4 @@ saveas(fig, 'spike_detection.pdf', 'pdf')
\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}
\end{document}

View File

@ -62,7 +62,7 @@ def plot_isi_rate(spike_times, max_t=30, dt=1e-4):
ax1.vlines(times[times < (50000*dt)], ymin=0, ymax=1, color="dodgerblue", lw=1.5)
ax1.set_ylabel("skpikes", fontsize=12)
set_axis_fontsize(ax1, 12)
ax1.set_xlim([0, 5])
ax2.plot(time, rate, label="instantaneous rate, trial 1")
ax2.set_ylabel("firing rate [Hz]", fontsize=12)
ax2.legend(fontsize=12)
@ -191,8 +191,61 @@ def plot_conv_rate(spike_times, sigma=0.05, max_t=30, dt=1e-4):
plt.close()
def plot_comparison(spike_times, bin_width, sigma, max_t=30., dt=1e-4):
times = np.squeeze(spike_times[0][0])
time, conv_rate = get_convolved_rate(times, bin_width/np.sqrt(12.))
time, inst_rate = get_instantaneous_rate(times)
time, binn_rate = get_binned_rate(times, bin_width)
fig = plt.figure()
ax1 = fig.add_subplot(411)
ax2 = fig.add_subplot(412)
ax3 = fig.add_subplot(413)
ax4 = fig.add_subplot(414)
ax1.vlines(times[times < (100000*dt)], ymin=0, ymax=1, color="dodgerblue", lw=1.5)
ax1.set_ylabel("spikes", fontsize=10)
ax1.set_xlim([1.5, 3.5])
ax1.set_ylim([0, 1])
ax1.set_yticks([0, 1])
set_axis_fontsize(ax1, 10)
ax1.set_xticklabels([])
ax2.plot(time, inst_rate, label="instantaneous rate")
ax2.set_ylabel("firing rate [Hz]", fontsize=10)
ax2.legend(fontsize=10)
ax2.set_xlim([1.5, 3.5])
ax2.set_ylim([0, 300])
set_axis_fontsize(ax2, 10)
ax2.set_xticklabels([])
ax3.plot(time, binn_rate, label="binned rate")
ax3.set_ylabel("firing rate [Hz]", fontsize=10)
ax3.legend(fontsize=10)
ax3.set_xlim([1.5, 3.5])
ax3.set_ylim([0, 300])
set_axis_fontsize(ax3, 10)
ax3.set_xticklabels([])
ax4.plot(time, conv_rate, label="convolved rate")
ax4.set_xlabel("times [s]", fontsize=10)
ax4.set_ylabel("firing rate [Hz]", fontsize=10)
ax4.legend(fontsize=10)
ax4.set_xlim([1.5, 3.5])
ax4.set_ylim([0, 300])
set_axis_fontsize(ax4, 10)
fig.set_size_inches(7.5, 5)
fig.subplots_adjust(left=0.1, bottom=0.125, top=0.95, right=0.95, )
fig.set_facecolor("white")
fig.savefig("../lecture/images/psth_comparison.pdf")
plt.close()
if __name__ == "__main__":
spike_times = spio.loadmat('lifoustim.mat')["spikes"]
plot_isi_rate(spike_times)
plot_bin_rate(spike_times, 0.05)
plot_conv_rate(spike_times, 0.025)
# plot_isi_rate(spike_times)
# plot_bin_rate(spike_times, 0.05)
# plot_conv_rate(spike_times, 0.025)
plot_comparison(spike_times, 0.05, 0.025)

View File

@ -37,17 +37,21 @@
\end{center}
\begin{questions}
\question Graphische Darstellung der zeitabh\"angigen Antwort eines
Neurons. PSTH auf Basis der instantanen Feuerrate. Verwendet den Datensatz \code{}
\question Stellt die zeitabh\"angigen Feuerrate eines Neurons als
PSTH dar. Das PSTH soll auf Basis der instantanen Feuerrate (des
Interspikeintervals) berechnet werden. Verwendet den Datensatz
\code{lifoustim.mat}. Dieser enth\"at drei Variablen: 1. die
Spikezeiten, 2. den Stimulus und 3. die zeitliche Aufl\"osung. Die
Dauer eines Trials betr\"agt 30 Sekunden.
\begin{parts}
\part Schreibt eine Funktion, die einen Vektor mit Spikezeiten,
die Dauer des Trials, und die zeitliche Aufl\"osung entgegennimmt
und die Zeitachse sowie die Feuerrate zur\"uckgiebt.
und die Zeitachse sowie die Feuerrate zur\"uckgibt.
\part Benutzt diese Funktion in einem Skript und stellt das PSTH
eines einzelnen Trials sowie den Mittelwert \"uber alle Trials
dar.
\part Erweitert das Programm so, dass die Abbildung den Standards
z.B. vom \textit{Journal of Neuroscience} entspricht
\part Erweitert das Programm so, dass die Abbildung den Richtlinien
des \textit{Journal of Neuroscience} entspricht
(Schriftgr\"o{\ss}e, Abbildungsgr\"o{\ss}e).
\part Die Abbildung sollte als pdf gespeichert werden.
\end{parts}
@ -62,13 +66,13 @@
Abbildungen sollten nat\"urlich ``publikationsreif'' sein und
gespeichert werden.
\question Einige trials sind anders als die \"Ubrigen. Benutzt den
Rasterplot um sie zu finden. Speichert alle Abbildungen in
``publikationsreifer'' Form.
\question Einige Trials sind anders als die \"Ubrigen. Benutzt den
Rasterplot um sie zu finden. Alle erstellten Abbildungen sollen in
``publikationsreifer'' Form gespeichert werden.
\begin{parts}
\part Benutzt den Rasterplot um sie zu finden.
\part Plottet die Verteilung der Spike counts.
\part Filtert all die trials heraus, deren spike count mehr als
\part Filtert all die Trials heraus, deren Spikecount mehr als
$2\sigma$ vom Mittelwert abweicht.
\part Plottet das PSTH vor und nach dem Filtern.
\end{parts}

View File

@ -0,0 +1,20 @@
TEXFILES=$(wildcard *.tex)
TEXFILES=psth_sta.tex
PDFFILES=$(TEXFILES:.tex=.pdf)
pdf : $(PDFFILES)
$(PDFFILES) : %.pdf : %.tex
pdflatex -interaction=scrollmode $< | tee /dev/stderr | fgrep -q "Rerun to get cross-references right" && pdflatex -interaction=scrollmode $< || true
clean :
rm -f *~ $(TEXFILES:.tex=.aux) $(TEXFILES:.tex=.log) $(TEXFILES:.tex=.out) $(TEXFILES:.tex=.nav) $(TEXFILES:.tex=.snm) $(TEXFILES:.tex=.toc) $(TEXFILES:.tex=.vrb)
cleanall : clean
rm -f $(PDFFILES)
watch :
while true; do ! make -q pdf && make pdf; sleep 0.5; done

View File

@ -0,0 +1,61 @@
% Copyright 2007 by Till Tantau
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.
%
% See the file doc/licenses/LICENSE for more details.
\usepackage{color}
\definecolor{karminrot}{RGB}{165,30,55}
\definecolor{gold}{RGB}{180,160,105}
\definecolor{anthrazit}{RGB}{50 ,65 ,75 }
\mode<presentation>
\setbeamercolor*{normal text}{fg=anthrazit,bg=white}
\setbeamercolor*{alerted text}{fg=anthrazit}
\setbeamercolor*{example text}{fg=anthrazit}
\setbeamercolor*{structure}{fg=gold,bg=karminrot}
\providecommand*{\beamer@bftext@only}{%
\relax
\ifmmode
\expandafter\beamer@bftext@warning
\else
\expandafter\bfseries
\fi
}
\providecommand*{\beamer@bftext@warning}{%
\ClassWarning{beamer}
{Cannot use bold for alerted text in math mode}%
}
\setbeamerfont{alerted text}{series=\beamer@bftext@only}
\setbeamercolor{palette primary}{fg=karminrot,bg=white}
\setbeamercolor{palette secondary}{fg=gold,bg=white}
\setbeamercolor{palette tertiary}{fg=anthrazit,bg=white}
\setbeamercolor{palette quaternary}{fg=black,bg=white}
\setbeamercolor{sidebar}{bg=karminrot!100}
\setbeamercolor{palette sidebar primary}{fg=karminrot}
\setbeamercolor{palette sidebar secondary}{fg=karminrot}
\setbeamercolor{palette sidebar tertiary}{fg=karminrot}
\setbeamercolor{palette sidebar quaternary}{fg=karminrot}
\setbeamercolor{item projected}{fg=black,bg=black!20}
\setbeamercolor*{block body}{}
\setbeamercolor*{block body alerted}{}
\setbeamercolor*{block body example}{}
\setbeamercolor*{block title}{parent=structure}
\setbeamercolor*{block title alerted}{parent=alerted text}
\setbeamercolor*{block title example}{parent=example text}
\setbeamercolor*{titlelike}{parent=structure}
\mode
<all>

View File

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

View File

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

View File

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -0,0 +1,389 @@
\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<presentation>
{
\usetheme{Singapore}
\setbeamercovered{opaque}
\usecolortheme{tuebingen}
\setbeamertemplate{navigation symbols}{}
\usefonttheme{default}
\useoutertheme{infolines}
% \useoutertheme{miniframes}
}
\AtBeginSection[]
{
\begin{frame}<beamer>
\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{Spiketrain Analyse}
\frametitle{Inhalt}
\begin{enumerate}
\item Peri Stimulus Time Histogram
\item Spike-triggered average
\end{enumerate}
\end{frame}
\begin{frame}[plain]
\huge{1. Peri Stimulus Time Histogram, PSTH}
\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{2. 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}
\framesubtitle{Spiketrain Analyse}
\framesubtitle{Weitere Themen}
\begin{enumerate}
\item Tuningkurven.
\item Stimulusrekonstruktion mittels STA.
\item Kreuzkorrelation.
\item Fourier Analyse, Transferfunktion, Kohärenz.
\item Reverse Rekonstruktion.
\end{enumerate}
\end{frame}

View File

@ -0,0 +1,47 @@
\chapter{Spiketrainanalyse}
Die zeitliche Abfolge von Aktionspotentialen, die ein Neuron generiert
enth\"alt die Information \"uber den Stimulus, die das Neuron
codiert. Aus der Analyse dieser Aktionspotentialfolgen oder,
kompakter, Spiketrains k\"onnen wir herausfinden welche Aspekte des
Stimulus codiert wird und somit nachfolgenden Verarbeitungsschritten
zur Verf\"ugung steht.
Im elektrophysiologischen Experiment werden h\"aufig nur die
Zeitpunkte registriert an denen Aktionspotentiale, Spikes,
auftraten. Die Neuronale Aktivit\"at wird mitunter als Punktprozess
aufgefasst. Erstaunlicherweise lassen sich die Spiketrains mancher
kortikaler Neurone sehr gut durch ratenmodulierte Poissonprozesse
modellieren.
Die Analyse von Spiketrains beinhaltet demnach einige der Methoden,
die auch f\"r die Beschreibung von Punktprozessen angewandt
werden. Dar\"uber hinaus wird versucht die Beziehung zwischen der
zeitabh\"aengigen neuronalen Antwort und dem zugrundeliegenden
Stimulus zu analysieren.
\section{Darstellung der zeitabh\"angigen Feuerrate}
Eine klassische Darstellung zeitabh\"angiger neuronaler Aktivit\"at
ist das sog. Peri Stimulus Zeithistogramm (peri stimulus time
histogram, PSTH). Es wird der zeitliche Verlauf der Feuerrate $r(t)$
dargestellt. Die Einheit der Feuerrate ist Hertz, das heisst, die
Anzahl Aktionspotentiale pro Sekunde. Dabei gibt es verschiedene
Methoden diese zu bestimmen. Drei solcher Methoden sind in Abbildung
\ref{psthfig} dargestellt.
\begin{figure}
\includegraphics[width=\columnwidth]{images/psth_comparison}
\caption{}\label{psthfig}
\end{figure}
\section{Spike triggered Average}
Der Spike triggered average (STA) ist der mittlere Stimulus, der zu
einem Aktionspotential in der neuronalen Antwort f\"uhrt.
\begin{equation}
STA(\tau) = \frac{1}{\langle n \rangle} \left\langle \displaystyle\sum_{i=1}^{n}{s(t_i - \tau)} \right\rangle
\end{equation}

View File

@ -0,0 +1,226 @@
\documentclass[12pt]{report}
%%%%% title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\title{\tr{Introduction to Scientific Computing}{Einf\"uhrung in die wissenschaftliche Datenverarbeitung}}
\author{Jan Benda\\Abteilung Neuroethologie\\[2ex]\includegraphics[width=0.3\textwidth]{UT_WBMW_Rot_RGB}}
\date{WS 15/16}
%%%% language %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \newcommand{\tr}[2]{#1} % en
% \usepackage[english]{babel}
\newcommand{\tr}[2]{#2} % de
\usepackage[german]{babel}
%%%%% packages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{pslatex} % nice font for pdf file
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
%%%% layout %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[left=25mm,right=25mm,top=20mm,bottom=30mm]{geometry}
\setcounter{tocdepth}{1}
%%%%% section style %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[sf,bf,it,big,clearempty]{titlesec}
\setcounter{secnumdepth}{1}
%%%%% units %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro
%%%%% figures %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{graphicx}
\usepackage{xcolor}
\pagecolor{white}
\newcommand{\ruler}{\par\noindent\setlength{\unitlength}{1mm}\begin{picture}(0,6)%
\put(0,4){\line(1,0){170}}%
\multiput(0,2)(10,0){18}{\line(0,1){4}}%
\multiput(0,3)(1,0){170}{\line(0,1){2}}%
\put(0,0){\makebox(0,0){{\tiny 0}}}%
\put(10,0){\makebox(0,0){{\tiny 1}}}%
\put(20,0){\makebox(0,0){{\tiny 2}}}%
\put(30,0){\makebox(0,0){{\tiny 3}}}%
\put(40,0){\makebox(0,0){{\tiny 4}}}%
\put(50,0){\makebox(0,0){{\tiny 5}}}%
\put(60,0){\makebox(0,0){{\tiny 6}}}%
\put(70,0){\makebox(0,0){{\tiny 7}}}%
\put(80,0){\makebox(0,0){{\tiny 8}}}%
\put(90,0){\makebox(0,0){{\tiny 9}}}%
\put(100,0){\makebox(0,0){{\tiny 10}}}%
\put(110,0){\makebox(0,0){{\tiny 11}}}%
\put(120,0){\makebox(0,0){{\tiny 12}}}%
\put(130,0){\makebox(0,0){{\tiny 13}}}%
\put(140,0){\makebox(0,0){{\tiny 14}}}%
\put(150,0){\makebox(0,0){{\tiny 15}}}%
\put(160,0){\makebox(0,0){{\tiny 16}}}%
\put(170,0){\makebox(0,0){{\tiny 17}}}%
\end{picture}\par}
% figures:
\setlength{\fboxsep}{0pt}
\newcommand{\texpicture}[1]{{\sffamily\footnotesize\input{#1.tex}}}
%\newcommand{\texpicture}[1]{\fbox{\sffamily\footnotesize\input{#1.tex}}}
%\newcommand{\texpicture}[1]{\setlength{\fboxsep}{2mm}\fbox{#1}}
%\newcommand{\texpicture}[1]{}
\newcommand{\figlabel}[1]{\textsf{\textbf{\large \uppercase{#1}}}}
% maximum number of floats:
\setcounter{topnumber}{2}
\setcounter{bottomnumber}{0}
\setcounter{totalnumber}{2}
% float placement fractions:
\renewcommand{\textfraction}{0.2}
\renewcommand{\topfraction}{0.8}
\renewcommand{\bottomfraction}{0.0}
\renewcommand{\floatpagefraction}{0.5}
% spacing for floats:
\setlength{\floatsep}{12pt plus 2pt minus 2pt}
\setlength{\textfloatsep}{20pt plus 4pt minus 2pt}
\setlength{\intextsep}{12pt plus 2pt minus 2pt}
% spacing for a floating page:
\makeatletter
\setlength{\@fptop}{0pt}
\setlength{\@fpsep}{8pt plus 2.0fil}
\setlength{\@fpbot}{0pt plus 1.0fil}
\makeatother
% rules for floats:
\newcommand{\topfigrule}{\vspace*{10pt}{\hrule height0.4pt}\vspace*{-10.4pt}}
\newcommand{\bottomfigrule}{\vspace*{-10.4pt}{\hrule height0.4pt}\vspace*{10pt}}
% captions:
\usepackage[format=plain,singlelinecheck=off,labelfont=bf,font={small,sf}]{caption}
% put caption on separate float:
\newcommand{\breakfloat}{\end{figure}\begin{figure}[t]}
% references to panels of a figure within the caption:
\newcommand{\figitem}[1]{\textsf{\bfseries\uppercase{#1}}}
% references to figures:
\newcommand{\panel}[1]{\textsf{\uppercase{#1}}}
\newcommand{\fref}[1]{\textup{\ref{#1}}}
\newcommand{\subfref}[2]{\textup{\ref{#1}}\,\panel{#2}}
% references to figures in normal text:
\newcommand{\fig}{Fig.}
\newcommand{\Fig}{Figure}
\newcommand{\figs}{Figs.}
\newcommand{\Figs}{Figures}
\newcommand{\figref}[1]{\fig~\fref{#1}}
\newcommand{\Figref}[1]{\Fig~\fref{#1}}
\newcommand{\figsref}[1]{\figs~\fref{#1}}
\newcommand{\Figsref}[1]{\Figs~\fref{#1}}
\newcommand{\subfigref}[2]{\fig~\subfref{#1}{#2}}
\newcommand{\Subfigref}[2]{\Fig~\subfref{#1}{#2}}
\newcommand{\subfigsref}[2]{\figs~\subfref{#1}{#2}}
\newcommand{\Subfigsref}[2]{\Figs~\subfref{#1}{#2}}
% references to figures within bracketed text:
\newcommand{\figb}{Fig.}
\newcommand{\figsb}{Figs.}
\newcommand{\figrefb}[1]{\figb~\fref{#1}}
\newcommand{\figsrefb}[1]{\figsb~\fref{#1}}
\newcommand{\subfigrefb}[2]{\figb~\subfref{#1}{#2}}
\newcommand{\subfigsrefb}[2]{\figsb~\subfref{#1}{#2}}
% references to tables:
\newcommand{\tref}[1]{\textup{\ref{#1}}}
% references to tables in normal text:
\newcommand{\tab}{Tab.}
\newcommand{\Tab}{Table}
\newcommand{\tabs}{Tabs.}
\newcommand{\Tabs}{Tables}
\newcommand{\tabref}[1]{\tab~\tref{#1}}
\newcommand{\Tabref}[1]{\Tab~\tref{#1}}
\newcommand{\tabsref}[1]{\tabs~\tref{#1}}
\newcommand{\Tabsref}[1]{\Tabs~\tref{#1}}
% references to tables within bracketed text:
\newcommand{\tabb}{Tab.}
\newcommand{\tabsb}{Tab.}
\newcommand{\tabrefb}[1]{\tabb~\tref{#1}}
\newcommand{\tabsrefb}[1]{\tabsb~\tref{#1}}
%%%%% equation references %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\newcommand{\eqref}[1]{(\ref{#1})}
\newcommand{\eqn}{\tr{Eq}{Gl}.}
\newcommand{\Eqn}{\tr{Eq}{Gl}.}
\newcommand{\eqns}{\tr{Eqs}{Gln}.}
\newcommand{\Eqns}{\tr{Eqs}{Gln}.}
\newcommand{\eqnref}[1]{\eqn~\eqref{#1}}
\newcommand{\Eqnref}[1]{\Eqn~\eqref{#1}}
\newcommand{\eqnsref}[1]{\eqns~\eqref{#1}}
\newcommand{\Eqnsref}[1]{\Eqns~\eqref{#1}}
%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{listings}
\lstset{
inputpath=../code,
basicstyle=\ttfamily\footnotesize,
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,
caption={\protect\filename@parse{\lstname}\protect\filename@base},
captionpos=t,
xleftmargin=1em,
xrightmargin=1em,
aboveskip=10pt
}
%%%%% math stuff: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{amsmath}
\usepackage{bm}
\usepackage{dsfont}
\newcommand{\naZ}{\mathds{N}}
\newcommand{\gaZ}{\mathds{Z}}
\newcommand{\raZ}{\mathds{Q}}
\newcommand{\reZ}{\mathds{R}}
\newcommand{\reZp}{\mathds{R^+}}
\newcommand{\reZpN}{\mathds{R^+_0}}
\newcommand{\koZ}{\mathds{C}}
%%%%% structure: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{ifthen}
\newcommand{\code}[1]{\texttt{#1}}
\newcommand{\source}[1]{
\begin{flushright}
\color{gray}\scriptsize \url{#1}
\end{flushright}
}
\newenvironment{definition}[1][]{\medskip\noindent\textbf{Definition}\ifthenelse{\equal{#1}{}}{}{ #1}:\newline}%
{\medskip}
\newcounter{maxexercise}
\setcounter{maxexercise}{9} % show listings up to exercise maxexercise
\newcounter{theexercise}
\setcounter{theexercise}{1}
\newenvironment{exercise}[1][]{\medskip\noindent\textbf{\tr{Exercise}{\"Ubung}
\arabic{theexercise}:}\newline \newcommand{\exercisesource}{#1}}%
{\ifthenelse{\equal{\exercisesource}{}}{}{\ifthenelse{\value{theexercise}>\value{maxexercise}}{}{\medskip\lstinputlisting{\exercisesource}}}\medskip\stepcounter{theexercise}}
\graphicspath{{figures/}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\include{psth_sta}
\end{document}