[projects] added solution to isicorrelations

This commit is contained in:
Jan Benda 2019-01-11 19:31:01 +01:00
parent 012c3e39b4
commit f76ab7170e
10 changed files with 178 additions and 49 deletions

View File

@ -29,8 +29,7 @@ Improve questions
project_isicorrelations
medium-difficult
Add statistical test for dependence on adapttau!
Need to program a solution!
Need to finish solution
project_isipdffit
Too technical

View File

@ -4,7 +4,7 @@
\textbf{Evaluation criteria:}
You can view the evaluation criteria on the
emph{SciCompScoreSheet.pdf} on Ilias.
\emph{SciCompScoreSheet.pdf} on Ilias.
\vspace{1ex}
\textbf{Dates:}
@ -23,7 +23,7 @@
zip-file.
Hint: make the zip file you want to upload, unpack it somewhere
else and check if your main script is running properly.
else and check if your main script is still running properly.
\vspace{1ex}
\textbf{Code:}

View File

@ -19,7 +19,8 @@ clean:
latex:
pdflatex $(BASENAME).tex
pdflatex $(BASENAME).tex
zip: pdf
zip: latex
rm -f zip $(BASENAME).zip
zip $(BASENAME).zip *.pdf *.m data/* $(ZIPFILES)

View File

@ -1,6 +1,6 @@
\documentclass[a4paper,12pt,pdftex]{exam}
\newcommand{\ptitle}{Interspike-intervall correlations}
\newcommand{\ptitle}{Adaptation and interspike-interval correlations}
\input{../header.tex}
\firstpagefooter{Supervisor: Jan Benda}{phone: 29 74573}%
{email: jan.benda@uni-tuebingen.de}
@ -20,10 +20,10 @@
Explore the dependence of interspike interval correlations on the firing rate,
adaptation time constant and noise level.
The neuron is a neuron with an adaptation current.
It is implemented in the file \texttt{lifadaptspikes.m}. Call it
with the following parameters:
\begin{lstlisting}
The neuron is a neuron with an adaptation current. It is
implemented in the file \texttt{lifadaptspikes.m}. Call it with the
following parameters:
\begin{lstlisting}
trials = 10;
tmax = 50.0;
input = 10.0; % the input I
@ -31,7 +31,7 @@ Dnoise = 1e-2; % noise strength
adapttau = 0.1; % adaptation time constant in seconds
adaptincr = 0.5; % adaptation strength
spikes = lifadaptspikes( trials, input, tmax, Dnoise, adapttau, adaptincr );
spikes = lifadaptspikes(trials, input, tmax, Dnoise, adapttau, adaptincr);
\end{lstlisting}
The returned \texttt{spikes} is a cell array with \texttt{trials} elements, each being a vector
of spike times (in seconds) computed for a duration of \texttt{tmax} seconds.
@ -39,29 +39,42 @@ spikes = lifadaptspikes( trials, input, tmax, Dnoise, adapttau, adaptincr );
and the adaptation time constant via \texttt{adapttau}.
\begin{parts}
\part Measure the intensity-response curve of the neuron, that is the mean firing rate
as a function of the input for a range of inputs from 0 to 120.
\part Compute the correlations between each interspike interval $T_i$ and the next one $T_{i+1}$
(serial interspike interval correlation at lag 1). Plot this correlation as a function of the
firing rate by varying the input as in (a).
\part How does this dependence change for different values of the adaptation
time constant \texttt{adapttau}? Use values between 10\,ms and
1\,s for \texttt{adapttau}.
\part Determine the firing rate at which the minimum interspike interval correlation
occurs. How does the minimum correlation and this firing rate
depend on the adaptation time constant \texttt{adapttau}?
\part How do the results change if the level of the intrinsic noise \texttt{Dnoise} is modified?
Use values of 1e-4, 1e-3, 1e-2, 1e-1, and 1 for \texttt{Dnoise}.
\uplevel{If you still have time you can continue with the following question:}
\part How do the interspike interval distributions look like for the different noise levels
at some example values for the input and the adaptation time constant?
\part Show a spike-raster plot and a time-resolved firing rate of
the neuron for an input current of 50 for three different
adaptation time constants \texttt{adapttau} (10\,m, 100\,ms,
1\,s). How do the neural responses look like and how do they
depend on the adaptation time constant?
\uplevel{For all the following analysis we only use the spike
times of the steady-state response, i.e. we skip all spikes
occuring before at least three times the adaptation time
constant.}
\part \label{ficurve} Measure the intensity-response curve of the
neuron, that is the mean firing rate as a function of the input
for a range of inputs from 0 to 120.
\part Additionally compute the correlations between each
interspike interval $T_i$ and the next one $T_{i+1}$ (serial
interspike interval correlation at lag 1) for the same range of
inputs as in (\ref{ficurve}). Plot the correlation as a function
of the input.
\part How does the intensity-response curve and the
interspike-interval correlations depend on the adaptation time
constant \texttt{adapttau}? Use several values between 10\,ms and
1\,s for \texttt{adapttau} (logarithmically distributed).
\part Determine the firing rate at which the minimum interspike
interval correlation occurs. How does the minimum correlation and
this firing rate (or the inverse of it, the mean interspike
interval) depend on the adaptation time constant
\texttt{adapttau}? Is this dependence siginificant? If yes, can
you explain this dependence?
\part How do all the results change if the level of the intrinsic
noise \texttt{Dnoise} is modified? Use values of 1e-4, 1e-3,
1e-2, 1e-1, and 1 for \texttt{Dnoise}.
\end{parts}

View File

@ -41,11 +41,8 @@ function spikes = lifadaptspikes( trials, input, tmaxdt, D, tauadapt, adaptincr
if v >= vthresh
v = vreset;
a = a + adaptincr/tauadapt;
spiketime = i*dt;
if spiketime > 4.0*tauadapt
times(j) = spiketime - 4.0*tauadapt;
j = j + 1;
end
times(j) = i*dt;
j = j + 1;
end
end
spikes{k} = times;

View File

@ -0,0 +1,11 @@
function [ rate ] = firingrate(spikes, t0, t1)
% compute the firing rate from spikes between t0 and t1
rates = zeros(length(spikes), 1);
for k = 1:length(spikes)
spiketimes = spikes{k};
rates(k) = length(spiketimes((spiketimes>=t0)&(spiketimes<=t1)))/(t1-t0);
end
rate = mean(rates);
end

View File

@ -0,0 +1,36 @@
trials = 5;
tmax = 10.0;
Dnoise = 1e-2; % noise strength
adapttau = 0.1; % adaptation time constant in seconds
adaptincr = 0.5; % adaptation strength
t0=2.0;
t1=tmax;
maxlag = 5;
taus = [0.01, 0.1, 1.0];
colors = ['r', 'b', 'g'];
for j = 1:length(taus)
adapttau = taus(j);
% f-I curves:
Is = [0:10:80];
rate = zeros(length(Is),1);
corr = zeros(length(Is),maxlag);
for k = 1:length(Is)
input = Is(k);
spikes = lifadaptspikes(trials, input, tmax, Dnoise, adapttau, adaptincr);
rate(k) = firingrate(spikes, t0, t1);
corr(k,:) = serialcorr(spikes, t0, t1, maxlag);
end
figure(1);
hold on
plot(Is, rate, colors(j));
hold off
figure(2);
hold on
plot(Is, corr(:,2), colors(j));
hold off
end
pause

View File

@ -0,0 +1,50 @@
function spikes = lifadaptspikes( trials, input, tmaxdt, D, tauadapt, adaptincr )
% Generate spike times of a leaky integrate-and-fire neuron
% with an adaptation current
% 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
% D: the strength of additive white noise
% tauadapt: adaptation time constant
% adaptincr: adaptation strength
tau = 0.01;
if nargin < 4
D = 1e0;
end
if nargin < 5
tauadapt = 0.1;
end
if nargin < 6
adaptincr = 1.0;
end
vreset = 0.0;
vthresh = 10.0;
dt = 1e-4;
if max( size( input ) ) == 1
input = input * ones( ceil( tmaxdt/dt ), 1 );
else
dt = tmaxdt;
end
spikes = cell( trials, 1 );
for k=1:trials
times = [];
j = 1;
v = vreset + (vthresh-vreset)*rand();
a = 0.0;
noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt);
for i=1:length( noise )
v = v + ( - v - a + noise(i) + input(i))*dt/tau;
a = a + ( - a )*dt/tauadapt;
if v >= vthresh
v = vreset;
a = a + adaptincr/tauadapt;
times(j) = i*dt;
j = j + 1;
end
end
spikes{k} = times;
end
end

View File

@ -0,0 +1,15 @@
function [ isicorrs ] = serialcorr(spikes, t0, t1, maxlag)
% compute the serial correlations from spikes between t0 and t1
ics = zeros(length(spikes), maxlag);
for k = 1:length(spikes)
spiketimes = spikes{k};
isis = diff(spiketimes((spiketimes>=t0)&(spiketimes<=t1)));
if length(isis) > 2*maxlag
for j=1:maxlag
ics(k, j) = corr(isis(j:end)', isis(1:end+1-j)');
end
end
end
isicorrs = mean(ics, 1);
end

View File

@ -36,22 +36,29 @@ resting potential before stimulus onset.
project, however, you can treat it as if it was the intensity.)
\begin{parts}
\part{} Create a plot of the raw data. For each light intensity plot the average response
as a function of time. This plot should also depict the across-trial
variability in an appropriate way.\\[0.5ex]
\part{} You will notice that the responses have three main parts, a
\part Create a plot of the raw data. For each light intensity plot
the average response as a function of time. This plot should also
depict the across-trial variability in an appropriate way.
\part You will notice that the responses have three main parts, a
pre-stimulus phase, the phase in which the light was on, and
finally a post-stimulus phase. Create an characteristic curve that
plots the response strength as a function of the stimulus
intensity for the ``onset'' and the ``steady state''
phases of the light response.\\[0.5ex]
\part{} The light switches on at time zero. Estimate the delay between stimulus and response.\\[0.5ex]
\part{} Analyze the across trial variability in the ``onset'' and ``steady state''. Check for statistically significant differences.
\pate{} The membrane potential shows some fluctuations (noise)
phases of the light response.
\part The light switches on at time zero. Estimate the delay
between stimulus and response.
\part Analyze the across trial variability in the ``onset'' and
``steady state''. Check for statistically significant differences.
\part The membrane potential shows some fluctuations (noise)
compare the noise before stimulus onset and in the steady state
phase of the response.
\part{} (optional) You may also analyze the post-stimulus response in some
more detail.
\part (optional) You may also analyze the post-stimulus response
in some more detail.
\end{parts}
\end{questions}