Merge branch 'master' of raven.am28.uni-tuebingen.de:scientificComputing
This commit is contained in:
commit
344ae6ba59
@ -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
|
||||
|
||||
|
@ -99,10 +99,11 @@ 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
|
||||
% not so good:
|
||||
load poisson.mat
|
||||
whos
|
||||
poissonspikes = spikes;
|
||||
@ -111,15 +112,23 @@ 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}
|
||||
|
||||
\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 +136,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 +159,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 +180,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}
|
||||
|
@ -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.
|
||||
\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}
|
||||
\lstinputlisting{../code/isis.m}
|
||||
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 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?
|
||||
\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.
|
||||
\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
|
||||
@ -199,4 +190,12 @@ for sufficiently small $\Delta t$.
|
||||
|
||||
\end{questions}
|
||||
|
||||
\end{document}
|
||||
\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.
|
@ -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} \; . \]
|
||||
|
||||
|
Reference in New Issue
Block a user