Merge branch 'master' of https://whale.am28.uni-tuebingen.de/git/teaching/scientificComputing
This commit is contained in:
commit
cc1b550015
@ -282,7 +282,7 @@ def axis_label(label, unit=None):
|
|||||||
if not unit:
|
if not unit:
|
||||||
return label
|
return label
|
||||||
elif xkcd_style:
|
elif xkcd_style:
|
||||||
return '%s/%s' % (label, unit)
|
return '%s (%s)' % (label, unit)
|
||||||
else:
|
else:
|
||||||
return '%s [%s]' % (label, unit)
|
return '%s [%s]' % (label, unit)
|
||||||
|
|
||||||
|
@ -158,20 +158,25 @@
|
|||||||
\question \qt{Statistics of spike counts}
|
\question \qt{Statistics of spike counts}
|
||||||
Now let's have a look at the statistics of the spike counts.
|
Now let's have a look at the statistics of the spike counts.
|
||||||
\begin{parts}
|
\begin{parts}
|
||||||
\part Write a function that counts and returns a vector with the
|
\part \label{counts} Write a function that counts with the number
|
||||||
number of spikes in windows of a given width $W$.
|
of spikes in windows of a given width $W$. The spikes are passed
|
||||||
|
to the function as a cell array containing vectors of spike times.
|
||||||
|
The function returns a single vector with all the spike counts.
|
||||||
|
\begin{solution}
|
||||||
|
\lstinputlisting{counts.m}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
Use this function to generate a properly normalized histogram of
|
\part Generate a properly normalized histogram of spike counts for
|
||||||
spike counts for the data of the three types of neurons. Use
|
the data of the three types of neurons. Use 100\,ms for the window
|
||||||
100\,ms for the window width.
|
width and the function from (\ref{counts}) for computing the spike
|
||||||
|
counts.
|
||||||
|
|
||||||
Compare the distributions with the Poisson distribution expected
|
In addition, compare the distributions with the Poisson
|
||||||
for a Poisson spike train:
|
distribution expected for a Poisson spike train:
|
||||||
\[ P(k) = \frac{(\lambda W)^ke^{\lambda W}}{k!} \; , \] where
|
\[ P(k) = \frac{(\lambda W)^ke^{\lambda W}}{k!} \; , \] where
|
||||||
$\lambda$ is the rate of the spike train that you should estimate
|
$\lambda$ is the rate of the spike train that you should estimate
|
||||||
from the data.
|
from the data.
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\lstinputlisting{counts.m}
|
|
||||||
\newsolutionpage
|
\newsolutionpage
|
||||||
\lstinputlisting{spikecountshists.m}
|
\lstinputlisting{spikecountshists.m}
|
||||||
\colorbox{white}{\includegraphics[width=1\textwidth]{spikecountshists}}
|
\colorbox{white}{\includegraphics[width=1\textwidth]{spikecountshists}}
|
||||||
|
@ -14,13 +14,27 @@
|
|||||||
\input{../../exercisestitle}
|
\input{../../exercisestitle}
|
||||||
|
|
||||||
\begin{questions}
|
\begin{questions}
|
||||||
|
\question The dataset \code{lifoustim.mat} contains the responses of a (model) neuron to a time-varying stimulus.
|
||||||
|
The dataset stores three variables: 1st the spike times in different trials,
|
||||||
|
2nd the stimulus, and 3rd the temporal resolution of the recording. The total
|
||||||
|
duration of each trial is 30 seconds.
|
||||||
|
|
||||||
|
\question{} Some trials are different than the others.
|
||||||
|
\begin{parts}
|
||||||
|
\part Use a rasterplot to identify them. In which sense
|
||||||
|
are they different?
|
||||||
|
\part Extend your program that it saves the figure with the width and height of 8.5\,cm using a fontsize of 10\,pt for labels.
|
||||||
|
See Chapter 3 in the script, or browse the Matlab help for more
|
||||||
|
information. Store the figure in pdf format.
|
||||||
|
|
||||||
|
\part Identify those trials in which the spike count
|
||||||
|
deviates more than $2\sigma$ (twice the standard deviation) from the average.
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
|
||||||
\question Plot the time-dependent firing rate of a neuron. Calculate
|
\question Plot the time-dependent firing rate of a neuron. Calculate
|
||||||
the firing rate from the \emph{instantaneous firing rate} (based on the
|
the firing rate from the \emph{instantaneous firing rate} (based on the
|
||||||
interspike interval). Use the \code{lifoustim.mat}. The dataset
|
interspike interval).
|
||||||
contains three variables. 1st the spike times in different trials,
|
|
||||||
2nd the stimulus, and 3rd the temporal resolution of the recording. The total
|
|
||||||
duration of each trial is 30 seconds.
|
|
||||||
|
|
||||||
\begin{parts}
|
\begin{parts}
|
||||||
\part Write a function that takes three arguments: the spike
|
\part Write a function that takes three arguments: the spike
|
||||||
@ -29,26 +43,18 @@
|
|||||||
time-dependent firing rate.
|
time-dependent firing rate.
|
||||||
\part Write a script that applies the above function to estimate
|
\part Write a script that applies the above function to estimate
|
||||||
the time-dependent firing rate of each trial. Plot the firing rates of the individual responses
|
the time-dependent firing rate of each trial. Plot the firing rates of the individual responses
|
||||||
and the average response as a function of time into the same graph.
|
and the average response as a function of time into the same graph. Save the figure in pdf
|
||||||
\part Extend your program that it saves the figure with the width and height of 8.5\,cm using a fontsize of 10\,pt for labels.
|
format. Use the same figure specifications as above and make sure it is properly labeled.
|
||||||
See Chapter 3 in the script, or browse the Matlab help for more
|
|
||||||
information. Store the figure in pdf format.
|
|
||||||
\end{parts}
|
\end{parts}
|
||||||
|
|
||||||
\question{} As before but use the binning method.
|
\question{} As before but estimate the "PSTH" using the binning method.
|
||||||
|
|
||||||
\question{} Extend your script that it also plots the interspike
|
\question{} Extend your script that it also plots the interspike
|
||||||
interval histogram and the distribution of spike counts into
|
interval histogram and the distribution of spike counts into
|
||||||
separate figures. Save the figures to file using the pdf format. You may also choose to use subplots instead of individual figures.
|
separate figures. Save the figures to file using the pdf format. You may also choose to use subplots instead of individual figures.
|
||||||
|
|
||||||
\question{} Some trials are different than the others.
|
|
||||||
\begin{parts}
|
|
||||||
\part Use a rasterplot to identify them. In which sense
|
|
||||||
are they different? Save the rasterplot in pdf
|
|
||||||
format. Use the same figure specifications as above and make sure it is properly labeled.
|
|
||||||
\part Identify those trials in which the spike count
|
|
||||||
deviates more than $2\sigma$ (twice the standard deviation) from the average.
|
|
||||||
\end{parts}
|
|
||||||
\end{questions}
|
\end{questions}
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
@ -69,7 +69,9 @@ def plot_homogeneous_spikes(ax):
|
|||||||
ax.set_title('stationary')
|
ax.set_title('stationary')
|
||||||
ax.set_xlim(0.0, duration)
|
ax.set_xlim(0.0, duration)
|
||||||
ax.set_ylim(-0.5, trials-0.5)
|
ax.set_ylim(-0.5, trials-0.5)
|
||||||
ax.set_xlabel('Time [s]')
|
ax.set_xticks([0, 1, 2])
|
||||||
|
ax.set_yticks(np.arange(0, trials+1, 5))
|
||||||
|
ax.set_xlabel('Time', 's')
|
||||||
ax.set_ylabel('Trial')
|
ax.set_ylabel('Trial')
|
||||||
ax.eventplot(homspikes, colors=[lsA['color']], linelength=0.8, lw=1)
|
ax.eventplot(homspikes, colors=[lsA['color']], linelength=0.8, lw=1)
|
||||||
|
|
||||||
@ -79,14 +81,16 @@ def plot_inhomogeneous_spikes(ax):
|
|||||||
ax.set_title('non-stationary')
|
ax.set_title('non-stationary')
|
||||||
ax.set_xlim(0.0, duration)
|
ax.set_xlim(0.0, duration)
|
||||||
ax.set_ylim(-0.5, trials-0.5)
|
ax.set_ylim(-0.5, trials-0.5)
|
||||||
ax.set_xlabel('Time [s]')
|
ax.set_xticks([0, 1, 2])
|
||||||
ax.set_ylabel('Trial')
|
ax.set_yticks(np.arange(0, trials+1, 5))
|
||||||
|
ax.set_xlabel('Time', 's')
|
||||||
|
#ax.set_ylabel('Trial')
|
||||||
ax.eventplot(inhspikes, colors=[lsA['color']], linelength=0.8, lw=1)
|
ax.eventplot(inhspikes, colors=[lsA['color']], linelength=0.8, lw=1)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
fig, (ax1, ax2) = plt.subplots(1, 2)
|
fig, (ax1, ax2) = plt.subplots(1, 2)
|
||||||
fig.subplots_adjust(**adjust_fs(fig, left=4.0, right=1.0, top=1.2))
|
fig.subplots_adjust(**adjust_fs(fig, left=5.0, right=1.0, top=1.2))
|
||||||
plot_homogeneous_spikes(ax1)
|
plot_homogeneous_spikes(ax1)
|
||||||
plot_inhomogeneous_spikes(ax2)
|
plot_inhomogeneous_spikes(ax2)
|
||||||
plt.savefig('rasterexamples.pdf')
|
plt.savefig('rasterexamples.pdf')
|
||||||
|
Reference in New Issue
Block a user