606 lines
28 KiB
TeX
606 lines
28 KiB
TeX
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\chapter{Spike-train analysis}
|
|
\label{pointprocesseschapter}
|
|
\exercisechapter{Spike-train analysis}
|
|
|
|
\entermde[action potential]{Aktionspotential}{Action potentials}
|
|
(\enterm[spike|seealso{action potential}]{spikes}) carry information
|
|
within neural systems. More precisely, the times at which action
|
|
potentials are generated contain the information. The waveform of the
|
|
action potential is largely stereotyped and therefore conveys no
|
|
information. Analyzing the statistics of spike times and their
|
|
relation to sensory stimuli or motor actions is central to
|
|
neuroscientific research. With multi-electrode arrays it is nowadays
|
|
possible to record from hundreds or even thousands of neurons
|
|
simultaneously. The open challenge is how to analyze such data sets in
|
|
order to understand how neural systems work. Let's start with the
|
|
basics in this chapter.
|
|
|
|
The result of the pre-processing of electrophysiological recordings
|
|
are series of spike times, which are termed \enterm[spike train]{spike
|
|
trains}. If measurements are repeated we get several \enterm{trials}
|
|
of spike trains (\figref{rasterexamplesfig}). Spike trains are lists
|
|
of times of events, the action potentials. Analyzing spike trains
|
|
leads into the realm of the statistics of so called \entermde[point
|
|
process]{Punktprozess}{point processes}.
|
|
|
|
\begin{figure}[bt]
|
|
\includegraphics[width=1\textwidth]{rasterexamples}
|
|
\titlecaption{\label{rasterexamplesfig}Raster plot.}{Raster plots of
|
|
ten trials of data illustrating the times of action
|
|
potentials. Each vertical stroke illustrates the time at which an
|
|
action potential was observed. Each row displays the events of one
|
|
trial. Shown is a stationary point process (homogeneous point
|
|
process with a rate $\lambda=20$\;Hz, left) and an non-stationary
|
|
point process with a rate that varies in time (noisy perfect
|
|
integrate-and-fire neuron driven by Ohrnstein-Uhlenbeck noise with
|
|
a time-constant $\tau=100$\,ms, right).}
|
|
\end{figure}
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\section{Point processes}
|
|
|
|
\begin{ibox}{Examples of point processes}
|
|
Every point process is generated by a temporally continuously
|
|
developing process. An event is generated whenever this process
|
|
crosses some threshold. For example:\vspace{-1ex}
|
|
\begin{itemize}
|
|
\item Action potentials/heart beat: created by the dynamics of the
|
|
neuron/sinoatrial node.
|
|
\item Earthquake: defined by the dynamics of the pressure between
|
|
tectonical plates.
|
|
\item Communication calls in crickets/frogs/birds: shaped by
|
|
the dynamics of the nervous system and the muscle apparatus.
|
|
\end{itemize}
|
|
\end{ibox}
|
|
|
|
\begin{figure}[tb]
|
|
\includegraphics{pointprocesssketch}
|
|
\titlecaption{\label{pointprocesssketchfig} Statistics of point
|
|
processes.}{A point process is a sequence of instances in time
|
|
$t_i$ that can be also characterized by inter-event intervals
|
|
$T_i=t_{i+1}-t_i$ and event counts $n_i$.}
|
|
\end{figure}
|
|
|
|
\noindent
|
|
A temporal \entermde{Punktprozess}{point process} is a stochastic
|
|
process that generates a sequence of events at times $\{t_i\}$. In
|
|
the neurosciences, the statistics of point processes is of importance
|
|
since the timing of neuronal events (action potentials, post-synaptic
|
|
potentials, events in EEG or local-field recordings, etc.) is crucial
|
|
for information transmission and can be treated as such a process.
|
|
|
|
The events of a point process can be illustrated by means of a raster
|
|
plot in which each vertical line indicates the time of an event. The
|
|
event from two different point processes are shown in
|
|
\figref{rasterexamplesfig}. In addition to the event times, point
|
|
processes can be described using the intervals $T_i=t_{i+1}-t_i$
|
|
between successive events or the number of observed events within a
|
|
certain time window $n_i$ (\figref{pointprocesssketchfig}).
|
|
|
|
\begin{exercise}{rasterplot.m}{}
|
|
Implement a function \varcode{rasterplot()} that displays the times of
|
|
action potentials within the first \varcode{tmax} seconds in a raster
|
|
plot. The spike times (in seconds) recorded in the individual trials
|
|
are stored as vectors of times within a cell array.
|
|
\end{exercise}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\section{Interval statistics}
|
|
|
|
The intervals $T_i=t_{i+1}-t_i$ between successive events are real
|
|
positive numbers. In the context of action potentials they are
|
|
referred to as \entermde{Interspikeintervalle}{interspike
|
|
intervals}. The statistics of interspike intervals are described
|
|
using common measures for describing the statistics of stochastic
|
|
real-valued variables:
|
|
|
|
\begin{figure}[t]
|
|
\includegraphics[width=0.96\textwidth]{isihexamples}\vspace{-2ex}
|
|
\titlecaption{\label{isihexamplesfig}Interspike-interval
|
|
histograms}{of the spike trains shown in \figref{rasterexamplesfig}.}
|
|
\end{figure}
|
|
|
|
\begin{exercise}{isis.m}{}
|
|
Implement a function \varcode{isis()} that calculates the interspike
|
|
intervals from several spike trains. The function should return a
|
|
single vector of intervals. The spike times (in seconds) of each
|
|
trial are stored as vectors within a cell-array.
|
|
\end{exercise}
|
|
|
|
%\subsection{First order interval statistics}
|
|
\begin{itemize}
|
|
\item Probability density $p(T)$ of the intervals $T$
|
|
(\figref{isihexamplesfig}). Normalized to $\int_0^{\infty} p(T) \; dT
|
|
= 1$.
|
|
\item Average interval: $\mu_{ISI} = \langle T \rangle =
|
|
\frac{1}{n}\sum\limits_{i=1}^n T_i$.
|
|
\item Standard deviation of the interspike intervals: $\sigma_{ISI} = \sqrt{\langle (T - \langle T
|
|
\rangle)^2 \rangle}$\vspace{1ex}
|
|
\item \entermde[coefficient of variation]{Variationskoeffizient}{Coefficient of variation}:
|
|
$CV_{ISI} = \frac{\sigma_{ISI}}{\mu_{ISI}}$.
|
|
\item \entermde[diffusion coefficient]{Diffusionskoeffizient}{Diffusion coefficient}: $D_{ISI} =
|
|
\frac{\sigma_{ISI}^2}{2\mu_{ISI}^3}$.
|
|
\end{itemize}
|
|
|
|
\begin{exercise}{isihist.m}{}
|
|
Implement a function \varcode{isiHist()} that calculates the normalized
|
|
interspike interval histogram. The function should take two input
|
|
arguments; (i) a vector of interspike intervals and (ii) the width
|
|
of the bins used for the histogram. It further returns the
|
|
probability density as well as the centers of the bins.
|
|
\end{exercise}
|
|
|
|
\begin{exercise}{plotisihist.m}{}
|
|
Implement a function that takes the return values of
|
|
\varcode{isiHist()} as input arguments and then plots the data. The
|
|
plot should show the histogram with the x-axis scaled to
|
|
milliseconds and should be annotated with the average ISI, the
|
|
standard deviation and the coefficient of variation.
|
|
\end{exercise}
|
|
|
|
\subsection{Interval correlations}
|
|
So called \entermde[return map]{return map}{return maps} are used to
|
|
illustrate interdependencies between successive interspike
|
|
intervals. The return map plots the delayed interval $T_{i+k}$ against
|
|
the interval $T_i$. The parameter $k$ is called the \enterm{lag}
|
|
(\determ{Verz\"ogerung}) $k$. Stationary and non-stationary return
|
|
maps are distinctly different \figref{returnmapfig}.
|
|
|
|
\begin{figure}[tp]
|
|
\includegraphics[width=1\textwidth]{serialcorrexamples}
|
|
\titlecaption{\label{returnmapfig}Interspike-interval
|
|
correlations}{of the spike trains shown in
|
|
\figref{rasterexamplesfig}. Upper panels show the return maps and
|
|
lower panels the serial correlations of successive intervals
|
|
separated by lag $k$. All the interspike intervals of the
|
|
stationary spike trains are independent of each other --- this is
|
|
a so called \enterm{renewal process}
|
|
(\determ{Erneuerungsprozess}). In contrast, the ones of the
|
|
non-stationary spike trains show positive correlations that decay
|
|
for larger lags. The positive correlations in this example are
|
|
caused by a common stimulus that slowly increases and decreases
|
|
the mean firing rate of the spike trains.}
|
|
\end{figure}
|
|
|
|
Such dependencies can be further quantified using the
|
|
\entermde[correlation!serial]{Korrelation!serielle}{serial
|
|
correlations} \figref{returnmapfig}. The serial correlation is the
|
|
correlation coefficient of the intervals $T_i$ and the intervals
|
|
delayed by the lag $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 corr}(T_{i+k}, T_i) \] The resulting correlation coefficient
|
|
$\rho_k$ is usually plotted against the lag $k$
|
|
\figref{returnmapfig}. $\rho_0=1$ is the correlation of each interval
|
|
with itself and is always 1.
|
|
|
|
\begin{exercise}{isiserialcorr.m}{}
|
|
Implement a function \varcode{isiserialcorr()} that takes a vector of
|
|
interspike intervals as input argument and calculates the serial
|
|
correlation. The function should further plot the serial
|
|
correlation.
|
|
\end{exercise}
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\section{Count statistics}
|
|
|
|
\begin{figure}[t]
|
|
\includegraphics{countexamples}
|
|
\titlecaption{\label{countstatsfig}Count statistics.}{Probability
|
|
distributions of counting $k$ events $k$ (blue) within windows of
|
|
20\,ms (left) or 200\,ms duration (right) of a homogeneous Poisson
|
|
spike train with a rate of 20\,Hz
|
|
(\figref{rasterexamplesfig}). For Poisson spike trains these
|
|
distributions are given by Poisson distributions (red).}
|
|
\end{figure}
|
|
|
|
The most commonly used measure for characterizing spike trains is the
|
|
\enterm[firing rate!average]{average firing rate}. The firing rate $r$
|
|
is the average number of spikes counted within some time interval $W$
|
|
\begin{equation}
|
|
\label{firingrate}
|
|
r = \frac{\langle n \rangle}{W}
|
|
\end{equation}
|
|
and is neasured in Hertz. The average of the spike counts is taken
|
|
over trials. For stationary spike trains (no change in statistics, in
|
|
particular the firing rate, over time), the firing rate based on the
|
|
spike count equals the inverse average interspike interval
|
|
$1/\mu_{ISI}$.
|
|
|
|
The firing rate based on an averaged spike counts is one example of
|
|
many statistics based on event counts. Stationary spike trains can be
|
|
split into many segments $i$, each of duration $W$, and the number of
|
|
events $n_i$ in each of the segments can be counted. The integer event
|
|
counts can be quantified in the usual ways:
|
|
\begin{itemize}
|
|
\item Histogram of the counts $n_i$ (\figref{countstatsfig}).
|
|
\item Average number of counts: $\mu_n = \langle n \rangle$.
|
|
\item Variance of counts:
|
|
$\sigma_n^2 = \langle (n - \langle n \rangle)^2 \rangle$.
|
|
\end{itemize}
|
|
Because spike counts are unitless and positive numbers, the
|
|
\begin{itemize}
|
|
\item \entermde{Fano Faktor}{Fano factor} (variance of counts divided
|
|
by average count): $F = \frac{\sigma_n^2}{\mu_n}$.
|
|
\end{itemize}
|
|
is an additional measure quantifying event counts.
|
|
|
|
Note that all of these statistics depend on the chosen window length
|
|
$W$. The average spike count, for example, grows linearly with $W$ for
|
|
sufficiently large time windows: $\langle n \rangle = r W$,
|
|
\eqnref{firingrate}. Doubling the counting window doubles the spike
|
|
count. As does the spike-count variance (\figref{fanofig}). At smaller
|
|
time windows the statistics of the event counts might depend on the
|
|
particular duration of the counting window. There might be an optimal
|
|
time window for which the variance of the spike count is minimal. The
|
|
Fano factor plotted as a function of the time window illustrates such
|
|
properties of point processes (\figref{fanofig}).
|
|
|
|
This also has consequences for information transmission in neural
|
|
systems. The lower the variance in spike count relative to the
|
|
averaged count, the higher the signal-to-noise ratio at which
|
|
information encoded in the mean spike count is transmitted.
|
|
|
|
\begin{figure}[t]
|
|
\includegraphics{fanoexamples}
|
|
\titlecaption{\label{fanofig}
|
|
Count variance and Fano factor.}{Variance of event counts as a
|
|
function of mean counts obtained by varying the duration of the
|
|
count window (left). Dividing the count variance by the respective
|
|
mean results in the Fano factor that can be plotted as a function
|
|
of the count window (right). For Poisson spike trains the variance
|
|
always equals the mean counts and consequently the Fano factor
|
|
equals one irrespective of the count window (top). A spike train
|
|
with positive correlations between interspike intervals (caused by
|
|
Ohrnstein-Uhlenbeck noise) has a minimum in the Fano factor, that
|
|
is an analysis window for which the relative count variance is
|
|
minimal somewhere close to the correlation time scale of the
|
|
interspike intervals (bottom).}
|
|
\end{figure}
|
|
|
|
\begin{exercise}{counthist.m}{}
|
|
Implement a function \varcode{counthist()} that calculates and plots
|
|
the distribution of spike counts observed in a certain time
|
|
window. The function should take two input arguments: (i) a
|
|
cell-array of vectors containing the spike times in seconds observed
|
|
in a number of trials, and (ii) the duration of the time window that
|
|
is used to evaluate the counts.
|
|
\end{exercise}
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\section{Homogeneous Poisson process}
|
|
|
|
The Gaussian distribution is, because of the central limit theorem,
|
|
the standard distribution for continuous measures. The equivalent in
|
|
the realm of point processes is the
|
|
\entermde[distribution!Poisson]{Verteilung!Poisson-}{Poisson distribution}.
|
|
|
|
In a \entermde[Poisson process!homogeneous]{Poissonprozess!homogener}{homogeneous Poisson
|
|
process} the events occur at a fixed rate $\lambda=\text{const}$ and
|
|
are independent of both the time $t$ and occurrence of previous events
|
|
(\figref{hompoissonfig}). The probability of observing an event within
|
|
a small time window of width $\Delta t$ is given by
|
|
\begin{equation}
|
|
\label{hompoissonprob}
|
|
P = \lambda \cdot \Delta t \; .
|
|
\end{equation}
|
|
|
|
In an \entermde[Poisson process!inhomogeneous]{Poissonprozess!inhomogener}{inhomogeneous Poisson
|
|
process}, however, the rate $\lambda$ depends on time: $\lambda =
|
|
\lambda(t)$.
|
|
|
|
\begin{exercise}{poissonspikes.m}{}
|
|
Implement a function \varcode{poissonspikes()} that uses a homogeneous
|
|
Poisson process to generate events at a given rate for a certain
|
|
duration and a number of trials. The rate should be given in Hertz
|
|
and the duration of the trials is given in seconds. The function
|
|
should return the event times in a cell-array. Each entry in this
|
|
array represents the events observed in one trial. Apply
|
|
\eqnref{hompoissonprob} to generate the event times.
|
|
\end{exercise}
|
|
|
|
\begin{figure}[t]
|
|
\includegraphics[width=1\textwidth]{poissonraster100hz}
|
|
\titlecaption{\label{hompoissonfig}Rasterplot of spikes of a
|
|
homogeneous Poisson process with a rate $\lambda=100$\,Hz.}{}
|
|
\end{figure}
|
|
|
|
\begin{figure}[t]
|
|
\includegraphics[width=0.45\textwidth]{poissonisihexp20hz}\hfill
|
|
\includegraphics[width=0.45\textwidth]{poissonisihexp100hz}
|
|
\titlecaption{\label{hompoissonisihfig}Distribution of interspike
|
|
intervals of two Poisson processes.}{The processes differ in their
|
|
rate (left: $\lambda=20$\,Hz, right: $\lambda=100$\,Hz). The red
|
|
lines indicate the corresponding exponential interval distribution
|
|
\eqnref{poissonintervals}.}
|
|
\end{figure}
|
|
|
|
The homogeneous Poisson process has the following properties:
|
|
\begin{itemize}
|
|
\item Intervals $T$ are exponentially distributed (\figref{hompoissonisihfig}):
|
|
\begin{equation}
|
|
\label{poissonintervals}
|
|
p(T) = \lambda e^{-\lambda T} \; .
|
|
\end{equation}
|
|
\item The average interval is $\mu_{ISI} = \frac{1}{\lambda}$ .
|
|
\item The variance of the intervals is $\sigma_{ISI}^2 = \frac{1}{\lambda^2}$ .
|
|
\item Thus, the coefficient of variation is always $CV_{ISI} = 1$ .
|
|
\item The serial correlation is $\rho_k =0$ for $k>0$, since the
|
|
occurrence of an event is independent of all previous events. Such a
|
|
process is also called a \enterm{renewal process} (\determ{Erneuerungsprozess}).
|
|
\item The number of events $k$ within a temporal window of duration
|
|
$W$ is Poisson distributed:
|
|
\begin{equation}
|
|
\label{poissoncounts}
|
|
P(k) = \frac{(\lambda W)^ke^{\lambda W}}{k!}
|
|
\end{equation}
|
|
(\figref{hompoissoncountfig})
|
|
\item The Fano Faktor is always $F=1$ .
|
|
\end{itemize}
|
|
|
|
\begin{exercise}{hompoissonspikes.m}{}
|
|
Implement a function \varcode{hompoissonspikes()} that uses a
|
|
homogeneous Poisson process to generate spike events at a given rate
|
|
for a certain duration and a number of trials. The rate should be
|
|
given in Hertz and the duration of the trials is given in
|
|
seconds. The function should return the event times in a
|
|
cell-array. Each entry in this array represents the events observed
|
|
in one trial. Apply \eqnref{poissonintervals} to generate the event
|
|
times.
|
|
\end{exercise}
|
|
|
|
\begin{figure}[t]
|
|
\includegraphics[width=0.48\textwidth]{poissoncounthistdist100hz10ms}\hfill
|
|
\includegraphics[width=0.48\textwidth]{poissoncounthistdist100hz100ms}
|
|
\titlecaption{\label{hompoissoncountfig}Distribution of counts of a
|
|
Poisson spike train.}{The count statistics was generated for two
|
|
different windows of width $W=10$\,ms (left) and width $W=100$\,ms
|
|
(right). The red line illustrates the corresponding Poisson
|
|
distribution \eqnref{poissoncounts}.}
|
|
\end{figure}
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\section{Time-dependent firing rate}
|
|
|
|
So far we have discussed stationary spike trains. The statistical properties
|
|
of these did not change within the observation time (stationary point
|
|
processes). Most commonly, however, this is not the case. A sensory
|
|
neuron, for example, might respond to a stimulus by modulating its
|
|
firing rate (non-stationary point process).
|
|
|
|
How the firing rate $r(t)$ changes over time is the most important
|
|
measure, when analyzing non-stationary spike trains. The unit of the
|
|
firing rate is Hertz, i.e. the number of action potentials per
|
|
second. There are different ways to estimate the firing rate and three
|
|
of these are illustrated in \figref{psthfig}. All have their own
|
|
justifications, their pros- and cons.
|
|
|
|
\begin{figure}[tp]
|
|
\includegraphics[width=\columnwidth]{firingrates}
|
|
\titlecaption{Estimating time-dependent firing rates.}{Rasterplot
|
|
showing one trial of spiking activity of a neuron (top).
|
|
\emph{Instantaneous rate}, classical PSTH estimatd with the
|
|
\emph{binning} method and by \emph{convolution} of the spike train
|
|
with a Gaussian kernel (bottom).}\label{psthfig}
|
|
\end{figure}
|
|
|
|
|
|
\subsection{Instantaneous firing rate}
|
|
|
|
\begin{figure}[tp]
|
|
\includegraphics[width=\columnwidth]{isimethod}
|
|
\titlecaption{Instantaneous firing rate.}{The recorded spike train
|
|
(top). Arrows illustrate the interspike intervals and numbers
|
|
give the intervals in milliseconds. The inverse of the interspike
|
|
intervals is the \emph{instantaneous firing rate}
|
|
(bottom).}\label{instratefig}
|
|
\end{figure}
|
|
|
|
A very simple method for estimating the time-dependent firing rate is
|
|
the \entermde[firing rate!instantaneous]{Feuerrate!instantane}{instantaneous firing rate}.
|
|
The firing rate can be directly estimated as the inverse of the time
|
|
between successive spikes, the interspike-interval (\figref{instratefig}).
|
|
|
|
\begin{equation}
|
|
\label{instantaneousrateeqn}
|
|
r_i = \frac{1}{T_i} .
|
|
\end{equation}
|
|
|
|
The instantaneous rate $r_i$ is valid for the whole interspike
|
|
interval. The method has the advantage of being extremely easy to
|
|
compute and that it does not make any assumptions about the relevant
|
|
timescale (of the encoding in the neuron or the decoding of a
|
|
postsynaptic neuron). The resulting $r(t)$, however, is no continuous
|
|
function, the firing rate jumps from one level to the next. Since the
|
|
interspike interval between successive spikes is never infinitely
|
|
long, the firing rate never reaches zero despite that the neuron may
|
|
not fire an action potential for a long time.
|
|
|
|
\begin{exercise}{instantaneousRate.m}{}
|
|
Implement a function that computes the instantaneous firing
|
|
rate. Plot the firing rate as a function of time.
|
|
%\note{TODO: example data!!!}
|
|
\end{exercise}
|
|
|
|
|
|
\subsection{Peri-stimulus-time-histogram}
|
|
While the instantaneous firing rate is based on the interspike
|
|
intervals, the \enterm{peri stimulus time histogram} (PSTH) is based on
|
|
spike counts within observation windows of the duration $W$. It
|
|
estimates the probability of observing a spike within that observation
|
|
time. It tries to estimate the average rate in the limit of small
|
|
obersvation times:
|
|
\begin{equation}
|
|
\label{psthrate}
|
|
r(t) = \lim_{W \to 0} \frac{\langle n \rangle}{W} \; ,
|
|
\end{equation}
|
|
where $\langle n \rangle$ is the across trial average number of action
|
|
potentials observed within the interval $(t, t+W)$. Such description
|
|
matches the time-dependent firing rate $\lambda(t)$ of an
|
|
inhomogeneous Poisson process.
|
|
|
|
The firing probability can be estimated using the \enterm[firing
|
|
rate!binning method]{binning method} or by using \enterm[firing
|
|
rate!kernel density estimation]{kernel density estimations}. Both
|
|
methods make an assumption about the relevant observation time-scale
|
|
($W$ in \eqnref{psthrate}).
|
|
|
|
\subsubsection{Binning-method}
|
|
|
|
\begin{figure}[tp]
|
|
\includegraphics[width=\columnwidth]{binmethod}
|
|
\titlecaption{Estimating the PSTH using the binning method.}{The
|
|
same spike train as shown in \figref{instratefig} (top). Vertical
|
|
gray lines indicate the borders between adjacent bins in which the
|
|
number of action potentials is counted (red numbers). The firing
|
|
rate is then the histogram normalized to the binwidth
|
|
(bottom).}\label{binpsthfig}
|
|
\end{figure}
|
|
|
|
The \entermde[firing rate!binning
|
|
method]{Feuerrate!Binningmethode}{binning method} separates the time
|
|
axis into regular bins of the bin width $W$ and counts for each bin
|
|
the number of observed action potentials (\figref{binpsthfig}
|
|
top). The resulting histogram is then normalized with the bin width
|
|
$W$ to yield the firing rate shown in the bottom trace of figure
|
|
\ref{binpsthfig}. The above sketched process is equivalent to
|
|
estimating the probability density. For computing a PSTH the
|
|
\code{hist()} function can be used.
|
|
|
|
The estimated firing rate is valid for the total duration of each
|
|
bin. This leads to the step-like plot shown in
|
|
\figref{binpsthfig}. $r(t)$ is thus not a contiunous function in
|
|
time. The binwidth defines the temporal resolution of the firing rate
|
|
estimation Changes that happen within a bin cannot be resolved. Thus
|
|
chosing a bin width implies an assumption about the relevant
|
|
time-scale.
|
|
|
|
\begin{exercise}{binnedRate.m}{}
|
|
Implement a function that estimates the firing rate using the
|
|
binning method. The method should take the spike-times as an
|
|
input argument and returns the firing rate. Plot the PSTH.
|
|
\end{exercise}
|
|
|
|
\subsubsection{Convolution method --- Kernel density estimation}
|
|
|
|
\begin{figure}[tp]
|
|
\includegraphics[width=\columnwidth]{convmethod}
|
|
\titlecaption{Estimating the firing rate using the convolution
|
|
method.}{The same spike train as in \figref{instratefig} (top). The
|
|
convolution of the spike train with a kernel replaces each spike
|
|
event with the kernel (red). A Gaussian kernel is used here, but
|
|
other kernels are also possible. If the kernel is properly
|
|
normalized the firing rate results directly form the superposition
|
|
of the kernels (bottom).}\label{convratefig}
|
|
\end{figure}
|
|
|
|
With the \entermde[firing rate!convolution
|
|
method]{Feuerrate!Faltungsmethode}{convolution method} we avoid the
|
|
sharp edges of the binning method. The spiketrain is convolved with a
|
|
\entermde{Faltungskern}{convolution kernel}. Technically speaking we
|
|
need to first create a binary representation of the spike train. This
|
|
binary representation is a series of zeros and ones in which the ones
|
|
denote the spike. Then this binary vector is convolved with a kernel
|
|
of a certain width:
|
|
\[r(t) = \int_{-\infty}^{\infty} \omega(\tau) \, \rho(t-\tau) \, {\rm d}\tau \; , \]
|
|
where $\omega(\tau)$ represents the kernel and $\rho(t)$ the binary
|
|
representation of the response. The process of convolution can be
|
|
imagined as replacing each event of the spiketrain with the kernel
|
|
(figure \ref{convratefig} top). The superposition of the replaced
|
|
kernels is then the firing rate (if the kernel is correctly normalized
|
|
to an integral of one, figure \ref{convratefig}
|
|
bottom).
|
|
|
|
In contrast to the other methods the convolution methods leads to a
|
|
continuous function which is often desirable (in particular when
|
|
applying methods in the frequency domain). The choice of the kernel
|
|
width defines, similar to the bin width of the binning method, the
|
|
temporal resolution of the method and thus makes assumptions about the
|
|
relevate time-scale.
|
|
|
|
\begin{exercise}{convolutionRate.m}{}
|
|
Implement the function that estimates the firing rate using the
|
|
convolution method. The method takes the spiketrain, the temporal
|
|
resolution of the recording (as the stepsize $dt$, in seconds) and
|
|
the width of the kernel (the standard deviation $\sigma$ of the
|
|
Gaussian kernel, in seconds) as input arguments. It returns the
|
|
firing rate. Plot the result.
|
|
\end{exercise}
|
|
|
|
\section{Spike-triggered Average}
|
|
|
|
The graphical representation of the neuronal activity alone is not
|
|
sufficient tot investigate the relation between the neuronal response
|
|
and a stimulus. One method to do this is the \entermde{Spike-triggered
|
|
Average}{spike-triggered average}, \enterm[STA|see{spike-triggered
|
|
average}]{STA}. The STA
|
|
\begin{equation}
|
|
STA(\tau) = \langle s(t - \tau) \rangle = \frac{1}{N} \sum_{i=1}^{N} s(t_i - \tau)
|
|
\end{equation}
|
|
of $N$ action potentials observed at the times $t_i$ in response to
|
|
the stimulus $s(t)$ is the average stimulus that led to a spike in the
|
|
neuron. The STA can be easily extracted by cutting snippets out of
|
|
$s(t)$ that surround the times of the spikes. The resulting stimulus
|
|
snippets are then averaged (\figref{stafig}).
|
|
|
|
\begin{figure}[t]
|
|
\includegraphics[width=\columnwidth]{sta}
|
|
\titlecaption{Spike-triggered average of a P-type electroreceptor
|
|
and the stimulus reconstruction.}{The neuron was driven by a
|
|
\enterm{white-noise} stimulus (blue, right). The STA (left) is the
|
|
average stimulus that surrounds the times of the recorded action
|
|
potentials (40\,ms before and 20\,ms after the spike). Using the
|
|
STA as a kernel for convolving the spiketrain we can reconstruct
|
|
the stimulus from the neuronal response. In this way we can get an
|
|
impression of the stimulus features that are linearly encoded in
|
|
the neuronal response (orange, right).}\label{stafig}
|
|
\end{figure}
|
|
|
|
From the STA we can extract several pieces of information about the
|
|
relation of stimulus and response. The width of the STA represents the
|
|
temporal precision with which the neuron encodes the stimulus waveform
|
|
and in which temporal window the neuron integrates the (sensory)
|
|
input. The amplitude of the STA tells something about the sensitivity
|
|
of the neuron. The STA is given in the same units as the stimulus and
|
|
a small amplitude indicates that the neuron needs only a small
|
|
stimulus amplitude to create a spike, a large amplitude on the
|
|
contrary suggests the opposite. The temporal delay between the STA and
|
|
the time of the spike is a consequence of the time the system (neuron)
|
|
needs to process the stimulus.
|
|
|
|
We can further use the STA to do a \enterm{reverse reconstruction} and
|
|
estimate the stimulus from the neuronal response (\figref{stafig},
|
|
right). For this, the spiketrain is convolved with the STA as a
|
|
kernel.
|
|
|
|
\begin{exercise}{spikeTriggeredAverage.m}{}
|
|
Implement a function that calculates the STA. Use the dataset
|
|
\file{sta\_data.mat}. The function expects the spike train, the
|
|
stimulus and the temporal resolution of the recording as input
|
|
arguments and should return the following information:
|
|
\vspace{-1ex}
|
|
\begin{itemize}
|
|
\setlength{\itemsep}{0ex}
|
|
\item the spike-triggered average.
|
|
\item the standard deviation of the STA across the individual snippets.
|
|
\item The number of action potentials used to estimate the STA.
|
|
\end{itemize}
|
|
|
|
\end{exercise}
|
|
|
|
\begin{exercise}{reconstructStimulus.m}{}
|
|
Do the reverse reconstruction using the STA and the spike times. The
|
|
function should return the estimated stimulus in a vector that has
|
|
the same size as the original stimulus contained in file
|
|
\file{sta\_data.mat}.
|
|
\end{exercise}
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\printsolutions
|