From 8fb45e4164b73ff973752e7a9d9cbd11d64d2936 Mon Sep 17 00:00:00 2001 From: Jan Benda Date: Tue, 27 Oct 2015 09:12:03 +0100 Subject: [PATCH 1/2] Small updates on pointprocesses --- pointprocesses/code/pifouspikes.m | 5 +- pointprocesses/exercises/pointprocesses01.tex | 52 ++++++++++--------- pointprocesses/exercises/pointprocesses02.tex | 10 +++- pointprocesses/lecture/pointprocesses.tex | 24 ++++++--- 4 files changed, 55 insertions(+), 36 deletions(-) diff --git a/pointprocesses/code/pifouspikes.m b/pointprocesses/code/pifouspikes.m index b6516cc..b671bd7 100644 --- a/pointprocesses/code/pifouspikes.m +++ b/pointprocesses/code/pifouspikes.m @@ -1,9 +1,10 @@ function spikes = pifouspikes( trials, input, tmaxdt, D, outau ) % Generate spike times of a perfect integrate-and-fire neuron +% with Ornstein-Uhlenbeck noise (colored noise). % trials: the number of trials to be generated % input: the stimulus either as a single value or as a vector -% tmaxdt: in case of a single value stimulus the duration of a trial -% in case of a vector as a stimulus the time step +% tmaxdt: in case of a single value stimulus: the duration of a trial +% in case of a vector as a stimulus: the time step % D: the strength of additive white noise % outau: time constant of the colored noise diff --git a/pointprocesses/exercises/pointprocesses01.tex b/pointprocesses/exercises/pointprocesses01.tex index eca18bb..93fb077 100644 --- a/pointprocesses/exercises/pointprocesses01.tex +++ b/pointprocesses/exercises/pointprocesses01.tex @@ -99,7 +99,7 @@ jan.benda@uni-tuebingen.de} der drei Neurone miteinander vergleichen. \begin{parts} \part Lade die Spiketrains aus den drei Dateien. Achte darauf, dass sie verschiedene - Variablennamen bekommen. + Variablen\-namen bekommen. \begin{solution} \begin{lstlisting} clear all @@ -115,11 +115,11 @@ jan.benda@uni-tuebingen.de} \end{solution} \part Schreibe eine Funktion, die die Spikezeiten der ersten - \code{tmax} Sekunden in einem Rasterplot visualisiert. In jeder + $t_{max}$ Sekunden in einem Rasterplot visualisiert. In jeder Zeile des Rasterplots wird ein Spiketrain dargestellt. Jeder einzelne Spike wird als senkrechte Linie zu der Zeit des Auftretens des Spikes geplottet. Benutze die Funktion, um die - Spikeraster der ersten 1\,s der drei Neurone zu plotten. + Spikeraster der ersten 1\,s der drei Neurone nebeneinander zu plotten. \begin{solution} \lstinputlisting{../code/spikeraster.m} \lstinputlisting{../code/plotspikeraster.m} @@ -127,22 +127,22 @@ jan.benda@uni-tuebingen.de} \colorbox{white}{\includegraphics[width=1\textwidth]{spikeraster}} \end{solution} - \part Schreibe eine Funktion, die einen einzigen Vektor mit den Interspike-Intervallen - aller Trials von Spikezeiten zur\"uckgibt. + \part Schreibe eine Funktion, die einen einzigen Vektor mit den + Interspikeintervallen aller Trials von Spikezeiten zur\"uckgibt. \begin{solution} \lstinputlisting{../code/isis.m} \end{solution} \part Schreibe eine Funktion, die ein normiertes Histogramm aus - einem Vektor von Interspike-Intervallen, gegeben in Sekunden, - berechnet und dieses mit richtiger Achsenbeschriftung plottet. Die - Interspike-Intervalle sollen dabei in Millisekunden angegeben - werden. Die Funktion soll ausserdem den Mittelwert, die Standardabweichung, - und den Variationskoeffizienten der Interspike Intervalle berechnen - und diese im Plot mit angeben. + einem Vektor von Interspikeintervallen, gegeben in Sekunden, + berechnet und dieses mit richtiger Achsenbeschriftung plottet. + Die Interspikeintervalle sollen dabei in Millisekunden angegeben + werden. Die Funktion soll zus\"atzlich den Mittelwert, die + Standardabweichung, und den Variationskoeffizienten der + Interspikeintervalle berechnen und diese im Plot mit angeben. - Benutze diese und die vorherige Funktion, um die Interspike-Intervall Verteilung - der drei Neurone zu vergleichen. + Benutze die vorherige und diese Funktion, um die + Interspikeintervall Verteilung der drei Neurone zu vergleichen. \begin{solution} \lstinputlisting{../code/isihist.m} \lstinputlisting{../code/plotisih.m} @@ -150,16 +150,19 @@ jan.benda@uni-tuebingen.de} \colorbox{white}{\includegraphics[width=1\textwidth]{isihist}} \end{solution} - \part Schreibe eine Funktion, die die Seriellen Korrelationen der - Interspike Intervalle f\"ur lags bis zu \code{maxlag} berechnet - und plottet. Die Seriellen Korrelationen $\rho_k$ f\"ur lag $k$ - der Interspike Intervalle $T_i$ sind wie folgt definiert: + \part Schreibe eine Funktion, die die seriellen Korrelationen der + Interspikeintervalle f\"ur Lags bis zu \code{maxlag} berechnet und + plottet. Die Seriellen Korrelationen $\rho_k$ f\"ur Lag $k$ der + Interspikeintervalle $T_i$ sind die Korrelationskoeffizienten + zwischen den Interspikeintervallen $T_i$ und den um das Lag $k$ + verschobenen Intervallen $T_{i+k}$: \[ \rho_k = \frac{\langle (T_{i+k} - \langle T \rangle)(T_i - \langle T \rangle) \rangle}{\langle (T_i - \langle T \rangle)^2\rangle} = \frac{{\rm cov}(T_{i+k}, T_i)}{{\rm - var}(T_i)} = {\rm corrcoef}(T_{i+k}, T_i) \] Benutze dies Funktion, - um die Interspike Intervall Korrelationen der drei Neurone zu - vergleichen. + var}(T_i)} = {\rm corr}(T_{i+k}, T_i) \] + + Benutze diese Funktion, um die Interspikeintervall-Korrelationen + der drei Neurone zu vergleichen. \begin{solution} \lstinputlisting{../code/isiserialcorr.m} \lstinputlisting{../code/plotserialcorr.m} @@ -168,11 +171,10 @@ jan.benda@uni-tuebingen.de} \part Schreibe eine Funktion, die aus Spikezeiten Histogramme aus der Anzahl von Spikes, die in Fenstern gegebener L\"ange $W$ - gez\"ahlt werden, erzeugt und plottet. Zus\"atzlich soll die Funktion - die Poisson-Verteilung - \[ P(k) = \frac{(\lambda W)^ke^{\lambda W}}{k!} \] mit der Rate - $\lambda$, die aus den Daten bestimmt werden kann, mit zu dem - Histogramm hineinzeichen. + gez\"ahlt werden, erzeugt und plottet. + + Wende diese Funktion auf die drei + Datens\"atze an. Probiere verschiedene Fenstergr\"o{\ss}en $W$ aus. \begin{solution} \lstinputlisting{../code/counthist.m} \lstinputlisting{../code/plotcounthist.m} diff --git a/pointprocesses/exercises/pointprocesses02.tex b/pointprocesses/exercises/pointprocesses02.tex index b4d927c..5728c21 100644 --- a/pointprocesses/exercises/pointprocesses02.tex +++ b/pointprocesses/exercises/pointprocesses02.tex @@ -199,4 +199,12 @@ for sufficiently small $\Delta t$. \end{questions} -\end{document} \ No newline at end of file +\end{document} + + + Zus\"atzlich soll die Funktion + die Poisson-Verteilung + \[ P(k) = \frac{(\lambda W)^ke^{\lambda W}}{k!} \] mit der Rate + $\lambda$, die aus den Daten bestimmt werden kann, mit zu dem + Histogramm hineinzeichen. Hinweis: es gibt eine \code{matlab} Funktion, + die die Fakult\"at $n!$ berechnet. \ No newline at end of file diff --git a/pointprocesses/lecture/pointprocesses.tex b/pointprocesses/lecture/pointprocesses.tex index 3d116a3..135ba4f 100644 --- a/pointprocesses/lecture/pointprocesses.tex +++ b/pointprocesses/lecture/pointprocesses.tex @@ -56,19 +56,28 @@ erzeugt. Zum Beispiel: \item Diffusions Koeffizient $D_{ISI} = \frac{\sigma_{ISI}^2}{2\mu_{ISI}^3}$. \end{itemize} -\subsection{Interval return maps} -Scatter plot von aufeinander folgenden Intervallen $(T_{i+k}, T_i)$ getrennt durch das ``lag'' $k$. +\subsection{Korrelationen der Intervalle} +In ``return maps'' werden die um das ``Lag'' $k$ verz\"ogerten +Intervalle $T_{i+k}$ gegen die Intervalle $T_i$ geplottet. Dies macht +m\"ogliche Abh\"angigkeiten von aufeinanderfolgenden Intervallen +sichtbar. \begin{figure}[t] \includegraphics[width=1\textwidth]{returnmapexamples} \includegraphics[width=1\textwidth]{serialcorrexamples} - \caption{\label{returnmapfig}Interspike-Intervall return maps and serial correlations.} + \caption{\label{returnmapfig}Interspike-Intervall return maps und + serielle Korrelationen zwischen aufeinander folgenden Intervallen + im Abstand des Lags $k$.} \end{figure} -\subsection{Serielle Korrelationen der Intervalle} -Korrelationskoeffizient zwischen aufeinander folgenden Intervallen getrennt durch ``lag'' $k$: -\[ \rho_k = \frac{\langle (T_{i+k} - \langle T \rangle)(T_i - \langle T \rangle) \rangle}{\langle (T_i - \langle T \rangle)^2\rangle} = \frac{{\rm cov}(T_{i+k}, T_i)}{{\rm var}(T_i)} \] -$\rho_0=1$ (Korrelation jedes Intervalls mit sich selber). +Solche Ab\"angigkeiten werden durch die serielle Korrelation der +Intervalle quantifiziert. Das ist der Korrelationskoeffizient +zwischen aufeinander folgenden Intervallen getrennt durch ``Lag'' $k$: +\[ \rho_k = \frac{\langle (T_{i+k} - \langle T \rangle)(T_i - \langle T \rangle) \rangle}{\langle (T_i - \langle T \rangle)^2\rangle} = \frac{{\rm cov}(T_{i+k}, T_i)}{{\rm var}(T_i)} += {\rm corr}(T_{i+k}, T_i) \] +\"Ublicherweise wird die Korrelation $\rho_k$ gegen den Lag $k$ +aufgetragen (\figref{returnmapfig}). $\rho_0=1$ (Korrelation jedes +Intervalls mit sich selber). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -87,7 +96,6 @@ Statistik der Anzahl der Ereignisse $N_i$ innerhalb von Beobachtungsfenstern $i$ \item Varianz der Anzahl: $\sigma_N^2 = \langle (N - \langle N \rangle)^2 \rangle$. \item Fano Faktor (Varianz geteilt durch Mittelwert): $F = \frac{\sigma_N^2}{\mu_N}$. \end{itemize} - Insbesondere ist die mittlere Rate der Ereignisse $r$ (``Spikes pro Zeit'', Feuerrate) gemessen in Hertz \[ r = \frac{\langle N \rangle}{W} \; . \] From 0be73cce5c952827f05c2f324d40d3a66dc3bf7f Mon Sep 17 00:00:00 2001 From: Jan Benda Date: Tue, 27 Oct 2015 17:26:57 +0100 Subject: [PATCH 2/2] Worked on pointprocess exercises --- pointprocesses/exercises/pointprocesses01.tex | 9 +++ pointprocesses/exercises/pointprocesses02.tex | 71 ++++++++----------- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/pointprocesses/exercises/pointprocesses01.tex b/pointprocesses/exercises/pointprocesses01.tex index 93fb077..e537be7 100644 --- a/pointprocesses/exercises/pointprocesses01.tex +++ b/pointprocesses/exercises/pointprocesses01.tex @@ -103,6 +103,7 @@ jan.benda@uni-tuebingen.de} \begin{solution} \begin{lstlisting} clear all + % not so good: load poisson.mat whos poissonspikes = spikes; @@ -111,6 +112,14 @@ jan.benda@uni-tuebingen.de} load lifadapt.mat; lifadaptspikes = spikes; clear spikes; + % better: + clear all + x = load( 'poisson.mat' ); + poissonspikes = x.spikes; + x = load( pifou.mat' ); + pifouspikes = x.spikes; + x = load( 'lifadapt.mat' ); + lifadaptspikes = x.spikes; \end{lstlisting} \end{solution} diff --git a/pointprocesses/exercises/pointprocesses02.tex b/pointprocesses/exercises/pointprocesses02.tex index 5728c21..0e849e3 100644 --- a/pointprocesses/exercises/pointprocesses02.tex +++ b/pointprocesses/exercises/pointprocesses02.tex @@ -11,11 +11,11 @@ \usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry} \pagestyle{headandfoot} \ifprintanswers -\newcommand{\stitle}{: L\"osungen} +\newcommand{\stitle}{L\"osungen} \else -\newcommand{\stitle}{} +\newcommand{\stitle}{\"Ubung} \fi -\header{{\bfseries\large \"Ubung 6\stitle}}{{\bfseries\large Statistik}}{{\bfseries\large 27. Oktober, 2015}} +\header{{\bfseries\large \stitle}}{{\bfseries\large Punktprozesse 2}}{{\bfseries\large 27. Oktober, 2015}} \firstpagefooter{Prof. Dr. Jan Benda}{Phone: 29 74573}{Email: jan.benda@uni-tuebingen.de} \runningfooter{}{\thepage}{} @@ -89,26 +89,27 @@ jan.benda@uni-tuebingen.de} \begin{questions} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\question \qt{Homogeneous Poisson process} -We use the Poisson process to generate spike trains on which we can test and imrpove some -standard analysis functions. - -A homogeneous Poisson process of rate $\lambda$ (measured in Hertz) is a point process -where the probability of an event is independent of time $t$ and independent of previous events. -The probability $P$ of an event within a bin of width $\Delta t$ is +\question \qt{Homogener Poisson Prozess} +Wir wollen den homogenen Poisson Prozess benutzen um Spikes zu generieren, +mit denen wir die Analysfunktionen des vorherigen \"Ubungszettel \"uberpr\"ufen k\"onnen. + +Ein homogener Poisson Prozess mit der Rate $\lambda$ (measured in Hertz) ist ein Punktprozess, +bei dem die Wahrschienlichkeit eines Ereignisses unabh\"angig von der Zeit $t$ und +unabh\"angig von vorherigen Ereignissen ist. +Die Wahrscheinlichkeit $P$ eines Ereignisses innerhalb eines Bins der Breite $\Delta t$ ist \[ P = \lambda \cdot \Delta t \] -for sufficiently small $\Delta t$. +f\"ur gen\"ugend kleine $\Delta t$. \begin{parts} - \part Write a function that generates $n$ homogeneous Poisson spike trains of a given duration $T_{max}$ - with rate $\lambda$. + \part Schreibe eine Funktion die $n$ homogene Poisson Spiketrains + einer gegebenen Dauer $T_{max}$ mit rate $\lambda$ erzeugt. \begin{solution} \lstinputlisting{hompoissonspikes.m} \end{solution} - \part Using this function, generate a few trials and display them in a raster plot. + \part Benutze diese Funktion um einige Trials von Spikes zu erzeugen + und plotte diese als Spikeraster. \begin{solution} - \lstinputlisting{../code/spikeraster.m} \begin{lstlisting} spikes = hompoissonspikes( 10, 100.0, 0.5 ); spikeraster( spikes ) @@ -117,41 +118,31 @@ for sufficiently small $\Delta t$. \colorbox{white}{\includegraphics[width=0.7\textwidth]{poissonraster100hz}} \end{solution} - \part Write a function that extracts a single vector of interspike intervals - from the spike times returned by the first function. - \begin{solution} - \lstinputlisting{../code/isis.m} - \end{solution} - - \part Write a function that plots the interspike-interval histogram - from a vector of interspike intervals. The function should also - compute the mean, the standard deviation, and the CV of the intervals - and display the values in the plot. - \begin{solution} - \lstinputlisting{../code/isihist.m} - \end{solution} - - \part Compute histograms for Poisson spike trains with rate - $\lambda=100$\,Hz. Play around with $T_{max}$ and $n$ and the bin width - (start with 1\,ms) of the histogram. - How many - interspike intervals do you approximately need to get a ``nice'' - histogram? How long do you need to record from the neuron? + \part Berechne Histogramme aus den Interspikeintervallen von $n$ + Poisson Spiketrains mit der Rate $\lambda=100$\,Hz. Ver\"andere + \"uber die Dauer $T_{max}$ der Spiketrains und die Anzahl $n$ der + Trials die Anzahl der Intervalle und ver\"andere auch die Binbreite + des Histograms (fange mit 1\,ms an). Wieviele Interspikeintervalle + werden ben\"otigt um ein ``sch\"ones'' Histogramm zu erhalten? Wie + lange m\"usste man also von dem Neuron ableiten? \begin{solution} - About 5000 intervals for 25 bins. This corresponds to a $5000 / 100\,\hertz = 50\,\second$ recording - of a neuron firing with 100\,\hertz. + About 5000 intervals for 25 bins. This corresponds to a $5000 / + 100\,\hertz = 50\,\second$ recording of a neuron firing with + 100\,\hertz. \end{solution} - \part Compare the histogram with the true distribution of intervals $T$ of the Poisson process + \part Vergleiche das Histogramm mit der zu erwartenden Verteilung + der Intervalle $T$ des Poisson Prozesses \[ p(T) = \lambda e^{-\lambda T} \] - for various rates $\lambda$. + mit rate $\lambda$. \begin{solution} \lstinputlisting{hompoissonisih.m} \colorbox{white}{\includegraphics[width=0.48\textwidth]{poissonisih100hz}} \colorbox{white}{\includegraphics[width=0.48\textwidth]{poissonisih20hz}} \end{solution} - \part What happens if you make the bin width of the histogram smaller than $\Delta t$ + \part \extra Was pasiert mit den Histogrammen, wenn die Binbreite der Histogramme kleiner + als das bei der Erzeugung der $\Delta t$ der used for generating the Poisson spikes? \begin{solution} The bins between the discretization have zero entries. Therefore