[projects] added solution to isicorrelations

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

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 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?
\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).
\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 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 \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 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 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 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}.
\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?
\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 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