diff --git a/projects/disclaimer.tex b/projects/disclaimer.tex index 9ef1771..5f15c3e 100644 --- a/projects/disclaimer.tex +++ b/projects/disclaimer.tex @@ -5,7 +5,7 @@ Each project has three elements that are graded: (i) the code, (ii) the slides/figures, and (iii) the presentation. - \vspace{.5cm} + \vspace{1ex} The {\bf code} and the {\bf presentation} should be uploaded to ILIAS at latest on Thursday, November 6th, 12:00h. @@ -13,7 +13,7 @@ your presentation as a pdf file. Bundle everything into a {\em single} zip-file. - \vspace{.5cm} + \vspace{1ex} The {\bf code} should be exectuable without any further adjustments from us. This means that you need to include all @@ -25,11 +25,11 @@ and comprehensible by third persons (use proper and consistent variable names). - \vspace{.5cm} \textbf{Please write your name and matriculation + \vspace{1ex} \textbf{Please write your name and matriculation number as a comment at the top of a script called \texttt{main.m}!} The \texttt{main.m} script then should call all your scripts. - \vspace{.5cm} + \vspace{1ex} The {\bf presentation} should be {\em at most} 10min long and be held in English. In the presentation you should (i) briefly @@ -38,4 +38,4 @@ figures showing your results. We will store all presentations on one computer to allow fast transitions between talks. - }} \ No newline at end of file + }} diff --git a/projects/project_adaptation_fit/adaptation_fit.tex b/projects/project_adaptation_fit/adaptation_fit.tex old mode 100755 new mode 100644 diff --git a/projects/project_eod/eod.tex b/projects/project_eod/eod.tex old mode 100755 new mode 100644 diff --git a/projects/project_eyetracker/eyetracker.tex b/projects/project_eyetracker/eyetracker.tex old mode 100755 new mode 100644 diff --git a/projects/project_vector_strength/Makefile b/projects/project_fano_slope/Makefile similarity index 74% rename from projects/project_vector_strength/Makefile rename to projects/project_fano_slope/Makefile index dad25ce..6422eb4 100644 --- a/projects/project_vector_strength/Makefile +++ b/projects/project_fano_slope/Makefile @@ -7,4 +7,4 @@ clean: rm -f `basename *.tex .tex`.pdf zip: latex - zip `basename *.tex .tex`.zip *.pdf *.dat *.mat + zip `basename *.tex .tex`.zip *.pdf *.dat *.mat *.m diff --git a/projects/project_fano_slope/fano_slope.tex b/projects/project_fano_slope/fano_slope.tex new file mode 100644 index 0000000..1ffe91e --- /dev/null +++ b/projects/project_fano_slope/fano_slope.tex @@ -0,0 +1,133 @@ +\documentclass[addpoints,10pt]{exam} +\usepackage{url} +\usepackage{color} +\usepackage{hyperref} + +\pagestyle{headandfoot} +\runningheadrule +\firstpageheadrule +\firstpageheader{Scientific Computing}{Project Assignment}{11/05/2014 + -- 11/06/2014} +%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014} +\firstpagefooter{}{}{} +\runningfooter{}{}{} +\pointsinmargin +\bracketedpoints + +%\printanswers +%\shadedsolutions + +%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{listings} +\lstset{ + basicstyle=\ttfamily, + numbers=left, + showstringspaces=false, + language=Matlab, + breaklines=true, + breakautoindent=true, + columns=flexible, + frame=single, +% captionpos=t, + xleftmargin=2em, + xrightmargin=1em, +% aboveskip=10pt, + %title=\lstname, +% title={\protect\filename@parse{\lstname}\protect\filename@base.\protect\filename@ext} + } + + +\begin{document} +%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%% +\sffamily +% \begin{flushright} +% \gradetable[h][questions] +% \end{flushright} + +\begin{center} + \input{../disclaimer.tex} +\end{center} + +%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{questions} + \question You are recording the activity of a neuron in response to + two different stimuli $I_1$ and $I_2$ (think of them, for example, + of two sound waves with different intensities $I_1$ and + $I_2$). Within an observation time of duration $W$ the neuron + responds stochastically with $n_i$ spikes. + + How well can an upstream neuron discriminate the two stimuli based + on the spike counts $n_i$? How does this depend on the slope of the + tuning curve of the neural responses? How is this related to the + fano factor (the ratio between the variance and the mean of the + spike counts)? + + \begin{parts} + \part The neuron is implemented in the file \texttt{lifboltzmanspikes.m}. + Call it with the following parameters: + \begin{lstlisting} + trials = 10; + tmax = 50.0; + Dnoise = 1.0; + imax = 25.0; + ithresh = 10.0; + slope=0.2; + input = 10.0; + + spikes = lifboltzmanspikes( trials, input, tmax, Dnoise, imax, ithresh, slope ); + \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. + The input is set via the \texttt{input} variable. + + For the two inputs use $I_1=10$ and $I_2=I_1 + 1$. + + First, show two raster plots for the responses to the two differrent stimuli. + + \part Measure the tuning curve of the neuron with respect to the input. That is, + compute the mean firing rate as a function of the input + strength. Find an appropriate range of input values. Do this for + different values of the \texttt{slope} parameter (values between + 0.1 and 2.0). + + \part Generate histograms of the spike counts within $W=200$\,ms of the + responses to the two differrent stimuli $I_1$ and $I_2$. How do they depend on the slope + of the tuning curve of the neuron? + + \part Think about a measure based on the spike count histograms that quantifies how well + the two stimuli can be distinguished based on the spike + counts. Plot the dependence of this measure as a function of the observation time $W$. + + For which slopes can the two stimuli perfectly discriminated? + + Hint: A possible readout is to set a threshold $n_{thresh}$ for + the observed spike count. Any response smaller than the threshold + assumes that the stimulus was $I_1$, any response larger than the + threshold assumes that the stimulus was $I_2$. What is the + probability that the stimulus was indeed $I_1$ or $I_2$, + respectively? Find the threshold $n_{thresh}$ that + results in the best discrimination performance. + + \part Also plot the Fano factor as a function of the slope. How is it related to the discriminability? + + \uplevel{If you still have time you can continue with the following questions:} + + \part You may change the difference between the two stimuli $I_1$ and $I_2$ + as well as the intrinsic noise of the neuron via \texttt{Dnoise} + (change it in factors of ten, higher values will make the + responses more variable) and repeat your analysis. + + \part For $I_1=10$ the mean firing is about $80$\,Hz. When changing the slope of the tuning curve + this firing rate may also change. Improve your analysis by finding for each slope the input + that results exactly in a firing rate of $80$\,Hz. Set $I_2$ on unit above $I_1$. + + \part How does the dependence of the stimulus discrimination performance on the slope change + when you set both $I_1$ and $I_2$ such that they evoke $80$ and + $100$\,Hz firing rate, respectively? + + \end{parts} + +\end{questions} + +\end{document} diff --git a/projects/project_fano_slope/lifboltzmanspikes.m b/projects/project_fano_slope/lifboltzmanspikes.m new file mode 100644 index 0000000..14640e4 --- /dev/null +++ b/projects/project_fano_slope/lifboltzmanspikes.m @@ -0,0 +1,51 @@ +function spikes = lifboltzmanspikes( trials, input, tmaxdt, D, imax, ithresh, slope ) +% Generate spike times of a leaky integrate-and-fire neuron +% 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 +% imax: maximum output of boltzman +% ithresh: threshold of boltzman input +% slope: slope factor of boltzman input + + tau = 0.01; + if nargin < 4 + D = 1e0; + end + if nargin < 5 + imax = 20; + end + if nargin < 6 + ithresh = 10; + end + if nargin < 7 + slope = 1; + end + vreset = 0.0; + vthresh = 10.0; + dt = 1e-4; + + if length( input ) == 1 + input = input * ones( ceil( tmaxdt/dt ), 1 ); + else + dt = tmaxdt; + end + inb = imax./(1.0+exp(-slope.*(input - ithresh))); + spikes = cell( trials, 1 ); + for k=1:trials + times = []; + j = 1; + v = vreset; + noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt); + for i=1:length( noise ) + v = v + ( - v + noise(i) + inb(i))*dt/tau; + if v >= vthresh + v = vreset; + times(j) = i*dt; + j = j + 1; + end + end + spikes{k} = times; + end +end diff --git a/projects/project_fano_time/Makefile b/projects/project_fano_time/Makefile new file mode 100644 index 0000000..6422eb4 --- /dev/null +++ b/projects/project_fano_time/Makefile @@ -0,0 +1,10 @@ +latex: + pdflatex *.tex > /dev/null + pdflatex *.tex > /dev/null + +clean: + rm -rf *.log *.aux *.zip *.out auto + rm -f `basename *.tex .tex`.pdf + +zip: latex + zip `basename *.tex .tex`.zip *.pdf *.dat *.mat *.m diff --git a/projects/project_fano_time/fano_time.tex b/projects/project_fano_time/fano_time.tex new file mode 100644 index 0000000..48eb889 --- /dev/null +++ b/projects/project_fano_time/fano_time.tex @@ -0,0 +1,119 @@ +\documentclass[addpoints,10pt]{exam} +\usepackage{url} +\usepackage{color} +\usepackage{hyperref} + +\pagestyle{headandfoot} +\runningheadrule +\firstpageheadrule +\firstpageheader{Scientific Computing}{Project Assignment}{11/05/2014 + -- 11/06/2014} +%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014} +\firstpagefooter{}{}{} +\runningfooter{}{}{} +\pointsinmargin +\bracketedpoints + +%\printanswers +%\shadedsolutions + +%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{listings} +\lstset{ + basicstyle=\ttfamily, + numbers=left, + showstringspaces=false, + language=Matlab, + breaklines=true, + breakautoindent=true, + columns=flexible, + frame=single, +% captionpos=t, + xleftmargin=2em, + xrightmargin=1em, +% aboveskip=10pt, + %title=\lstname, +% title={\protect\filename@parse{\lstname}\protect\filename@base.\protect\filename@ext} + } + + +\begin{document} +%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%% +\sffamily +% \begin{flushright} +% \gradetable[h][questions] +% \end{flushright} + +\begin{center} + \input{../disclaimer.tex} +\end{center} + +%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{questions} + \question You are recording the activity of a neuron in response to + two different stimuli $I_1$ and $I_2$ (think of them, for example, + of two sound waves with different intensities $I_1$ and + $I_2$). Within an observation time of duration $W$ the neuron + responds stochastically with $n_i$ spikes. + + How well can an upstream neuron discriminate the two + stimuli based on the spike counts $n_i$? How does this depend on the + duration $W$ of the observation time? How is this related to the fano factor + (the ratio between the variance and the mean of the spike counts)? + + \begin{parts} + \part The neuron is implemented in the file \texttt{lifadaptspikes.m}. + Call it with the following parameters: + \begin{lstlisting} + trials = 10; + tmax = 50.0; + input = 65.0; + Dnoise = 0.1; + adapttau = 0.2; + adaptincr = 0.5; + + 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. + + For the two inputs $I_1$ and $I_2$ use + \begin{lstlisting} + input = 65.0; % I_1 + input = 75.0; % I_2 + \end{lstlisting} + + Show two raster plots for the responses to the two differrent stimuli. + + \part Generate histograms of the spike counts within $W$ of the + responses to the two differrent stimuli. How do they depend on the observation time $W$ + (use values between 1\,ms and 1\,s)? + + \part Think about a measure based on the spike count histograms that quantifies how well + the two stimuli can be distinguished based on the spike + counts. Plot the dependence of this measure as a function of the observation time $W$. + + For which observation times can the two stimuli perfectly discriminated? + + Hint: A possible readout is to set a threshold $n_{thresh}$ for + the observed spike count. Any response smaller than the threshold + assumes that the stimulus was $I_1$, any response larger than the + threshold assumes that the stimulus was $I_2$. What is the + probability that the stimulus was indeed $I_1$ or $I_2$, + respectively? For a given $W$ find the threshold $n_{thresh}$ that + results in the best discrimination performance. + + \part Also plot the Fano factor as a function of $W$. How is it related to the discriminability? + + \uplevel{If you still have time you can continue with the following question:} + + \part You may change the two stimuli $I_1$ and $I_2$ and the intrinsic noise of the neuron via + \texttt{Dnoise} (change it in factors of ten, higher values will make the responses more variable) + and repeat your analysis. + + \end{parts} + +\end{questions} + +\end{document} diff --git a/projects/project_fano_time/lifadaptspikes.m b/projects/project_fano_time/lifadaptspikes.m new file mode 100644 index 0000000..2ef1874 --- /dev/null +++ b/projects/project_fano_time/lifadaptspikes.m @@ -0,0 +1,53 @@ +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; + 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; + spiketime = i*dt; + if spiketime > 4.0*tauadapt + times(j) = spiketime - 4.0*tauadapt; + j = j + 1; + end + end + end + spikes{k} = times; + end +end diff --git a/projects/project_isicorrelations/Makefile b/projects/project_isicorrelations/Makefile new file mode 100644 index 0000000..6422eb4 --- /dev/null +++ b/projects/project_isicorrelations/Makefile @@ -0,0 +1,10 @@ +latex: + pdflatex *.tex > /dev/null + pdflatex *.tex > /dev/null + +clean: + rm -rf *.log *.aux *.zip *.out auto + rm -f `basename *.tex .tex`.pdf + +zip: latex + zip `basename *.tex .tex`.zip *.pdf *.dat *.mat *.m diff --git a/projects/project_isicorrelations/isicorrelations.tex b/projects/project_isicorrelations/isicorrelations.tex new file mode 100644 index 0000000..2b50881 --- /dev/null +++ b/projects/project_isicorrelations/isicorrelations.tex @@ -0,0 +1,109 @@ +\documentclass[addpoints,10pt]{exam} +\usepackage{url} +\usepackage{color} +\usepackage{hyperref} + +\pagestyle{headandfoot} +\runningheadrule +\firstpageheadrule +\firstpageheader{Scientific Computing}{Project Assignment}{11/05/2014 + -- 11/06/2014} +%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014} +\firstpagefooter{}{}{} +\runningfooter{}{}{} +\pointsinmargin +\bracketedpoints + +%\printanswers +%\shadedsolutions + +%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{listings} +\lstset{ + basicstyle=\ttfamily, + numbers=left, + showstringspaces=false, + language=Matlab, + breaklines=true, + breakautoindent=true, + columns=flexible, + frame=single, +% captionpos=t, + xleftmargin=2em, + xrightmargin=1em, +% aboveskip=10pt, + %title=\lstname, +% title={\protect\filename@parse{\lstname}\protect\filename@base.\protect\filename@ext} + } + + +\begin{document} +%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%% +\sffamily +% \begin{flushright} +% \gradetable[h][questions] +% \end{flushright} + +\begin{center} + \input{../disclaimer.tex} +\end{center} + +%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{questions} + \question You are recording the activity of a neuron in response to + constant stimuli of intensity $I$ (think of that, for example, + of sound waves with intensities $I$). The neuron has an adaptatation + current that adapts the firing rate with a slow time constant down. + + Explore the dependence of interspike interval correlations on the firing rate, + adaptation time constant and noise level. + + \begin{parts} + \part 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 + 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 ); + \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. + The input is set via the \texttt{input} variable, the noise strength via \texttt{Dnoise}, + and the adaptation time constant via \texttt{adapttau}. + + \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? + + \end{parts} + +\end{questions} + +\end{document} diff --git a/projects/project_isicorrelations/lifadaptspikes.m b/projects/project_isicorrelations/lifadaptspikes.m new file mode 100644 index 0000000..2ef1874 --- /dev/null +++ b/projects/project_isicorrelations/lifadaptspikes.m @@ -0,0 +1,53 @@ +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; + 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; + spiketime = i*dt; + if spiketime > 4.0*tauadapt + times(j) = spiketime - 4.0*tauadapt; + j = j + 1; + end + end + end + spikes{k} = times; + end +end diff --git a/projects/project_isipdffit/Makefile b/projects/project_isipdffit/Makefile new file mode 100644 index 0000000..6422eb4 --- /dev/null +++ b/projects/project_isipdffit/Makefile @@ -0,0 +1,10 @@ +latex: + pdflatex *.tex > /dev/null + pdflatex *.tex > /dev/null + +clean: + rm -rf *.log *.aux *.zip *.out auto + rm -f `basename *.tex .tex`.pdf + +zip: latex + zip `basename *.tex .tex`.zip *.pdf *.dat *.mat *.m diff --git a/projects/project_isipdffit/isipdffit.tex b/projects/project_isipdffit/isipdffit.tex new file mode 100644 index 0000000..7f3a117 --- /dev/null +++ b/projects/project_isipdffit/isipdffit.tex @@ -0,0 +1,140 @@ +\documentclass[addpoints,10pt]{exam} +\usepackage{url} +\usepackage{color} +\usepackage{hyperref} + +\pagestyle{headandfoot} +\runningheadrule +\firstpageheadrule +\firstpageheader{Scientific Computing}{Project Assignment}{11/05/2014 + -- 11/06/2014} +%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014} +\firstpagefooter{}{}{} +\runningfooter{}{}{} +\pointsinmargin +\bracketedpoints + +%\printanswers +%\shadedsolutions + +%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{listings} +\lstset{ + basicstyle=\ttfamily, + numbers=left, + showstringspaces=false, + language=Matlab, + breaklines=true, + breakautoindent=true, + columns=flexible, + frame=single, +% captionpos=t, + xleftmargin=2em, + xrightmargin=1em, +% aboveskip=10pt, + %title=\lstname, +% title={\protect\filename@parse{\lstname}\protect\filename@base.\protect\filename@ext} + } + + +\begin{document} +%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%% +\sffamily +% \begin{flushright} +% \gradetable[h][questions] +% \end{flushright} + +\begin{center} + \input{../disclaimer.tex} +\end{center} + +%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{questions} + \question You are recording the activity of two neurons in response to + a constant stimulus $I$ (think of it, for example, + of a sound wave with intensity $I$). + + For different inputs $I$ the interspike interval ($T$) distribution looks + quite different. You want to compare these distributions to + the following three standard distributions. + + The first is the exponential distribution of a Poisson spike train: + \begin{equation} + \label{exppdf} + p_{exp}(T) = \lambda e^{-\lambda T} + \end{equation} + where $\lambda$ is the mean firing rate of the response. + + The second distribution is the inverse Gaussian: + \begin{equation} + \label{invgauss} + p_\mathrm{ig}(T) = \frac{1}{\sqrt{4 \pi D T^{3}}} \exp \left[ - \frac{(T - \mu)^{2} }{4 D T \mu^{2}} \right] + \end{equation} + where $\mu$ is the mean interspike interval and + $D=\textrm{var}(T)/(2\mu^3)$ is the so called diffusion coefficient. + + The third one was derived for neurons driven with colored noise: + \begin{equation}\label{pcn} + p_\mathrm{cn}(T)=\frac{1}{2\tau\sqrt{4\pi\epsilon\gamma_1^3}}\exp\left[-\frac{(T-\mu)^2}{4\epsilon\tau^2\gamma_1}\right]\left\{\frac{[(\mu-T)\gamma_2+2\gamma_1\tau]^2}{2\gamma_1\tau^2}-\epsilon(\gamma_2^2-2\gamma_1e^{-T/\tau})\right\} + \end{equation} + with $\gamma_1(T)=T/\tau+e^{-T/\tau}-1$, $\gamma_2(T)=1-e^{-T/\tau}$ + and correlation time of the colored noise $\tau$. + Eq.~(\ref{pcn}) thus has the three parameter $\mu$, $\epsilon>0$, and $\tau$. + + The squared coefficient of variation (standard deviation of the + interspike intervals divided by their mean) of the density + eq.~(\ref{pcn}) is given by + \begin{equation} + \label{cvpcn} + C_V^2=\frac{2}{\delta}\left[\epsilon\left(1-\frac{1-e^{-\delta}}{\delta}\right)+\epsilon^2\left(e^{-\delta}+\frac{(1-e^{-\delta})(1-2e^{-\delta})}{\delta}\right)\right] + \end{equation} + with $\delta=\mu/\tau$. + + \begin{parts} + \part The two neurons are implemented in the files \texttt{pifouspikes.m} + and \texttt{lifouspikes.m}. + Call them with the following parameters: + \begin{lstlisting} + trials = 10; + tmax = 50.0; + input = 10.0; % the input I + Dnoise = 1.0; % noise strength + outau = 1.0; % correlation time of the noise in seconds + + spikes = pifouspikes( trials, input, tmax, Dnoise, outau ); + \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. + The input is set via the \texttt{input} variable. + + \part Find for both model neurons the inputs $I_i$ required to make the fire with a mean rate + of 10, 20, 50, and 100\,Hz. + + \part Compute interspike interval distributions of the two model neurons for these inputs $I_i$. + + \part Compare the interspike interval distributions with the exponential + distribution eq.~(\ref{exppdf}) and the inverse Gaussian + eq.~(\ref{invgauss}) by measuring their parameters from the + interspike intervals. How well do theu describe the real + distributions for the different conditions? + + \part Also fit eq.~(\ref{pcn}) to the data. Here you need to apply a non-linear fit algorithm. + + How well does this function describe the data? + + Compare the fitted value for $\tau$ with the one used for the model (\texttt{outau}). + + + \uplevel{If you still have time you can continue with the following question:} + + \part Compare the measured coefficient of variation with eq.~(\ref{cvpcn}). + + \part Repeat your analysis for different values of the intrinsic noise strengh of the neurons + \texttt{Dnoise}. Increase or decrease it in factors of ten. + + \end{parts} + +\end{questions} + +\end{document} diff --git a/projects/project_isipdffit/lifouspikes.m b/projects/project_isipdffit/lifouspikes.m new file mode 100644 index 0000000..fc1f5d5 --- /dev/null +++ b/projects/project_isipdffit/lifouspikes.m @@ -0,0 +1,44 @@ +function spikes = lifouspikes( trials, input, tmaxdt, D, outau ) +% Generate spike times of a leaky integrate-and-fire neuron +% 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 +% outau: time constant of the colored noise + + tau = 0.01; + if nargin < 4 + D = 1e0; + end + if nargin < 5 + outau = 1.0; + end + vreset = 0.0; + vthresh = 10.0; + dt = 1e-4; + + if length( input ) == 1 + input = input * ones( ceil( tmaxdt/dt ), 1 ); + else + dt = tmaxdt; + end + spikes = cell( trials, 1 ); + for k=1:trials + times = []; + j = 1; + n = 0.0; + v = vreset; + noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt); + for i=1:length( noise ) + n = n + ( - n + noise(i))*dt/outau; + v = v + ( - v + n + input(i))*dt/tau; + if v >= vthresh + v = vreset; + times(j) = i*dt; + j = j + 1; + end + end + spikes{k} = times; + end +end diff --git a/projects/project_isipdffit/pifouspikes.m b/projects/project_isipdffit/pifouspikes.m new file mode 100644 index 0000000..b6516cc --- /dev/null +++ b/projects/project_isipdffit/pifouspikes.m @@ -0,0 +1,44 @@ +function spikes = pifouspikes( trials, input, tmaxdt, D, outau ) +% Generate spike times of a perfect integrate-and-fire neuron +% 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 +% outau: time constant of the colored noise + + tau = 0.01; + if nargin < 4 + D = 1e0; + end + if nargin < 5 + outau = 1.0; + end + vreset = 0.0; + vthresh = 10.0; + dt = 1e-4; + + if length( input ) == 1 + input = input * ones( ceil( tmaxdt/dt ), 1 ); + else + dt = tmaxdt; + end + spikes = cell( trials, 1 ); + for k=1:trials + times = []; + j = 1; + n = 0.0; + v = vreset; + noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt); + for i=1:length( noise ) + n = n + ( - n + noise(i))*dt/outau; + v = v + ( n + input(i))*dt/tau; + if v >= vthresh + v = vreset; + times(j) = i*dt; + j = j + 1; + end + end + spikes{k} = times; + end +end diff --git a/projects/project_mutualinfo/mutualinfo.tex b/projects/project_mutualinfo/mutualinfo.tex old mode 100755 new mode 100644 diff --git a/projects/project_noiseficurves/Makefile b/projects/project_noiseficurves/Makefile new file mode 100644 index 0000000..6422eb4 --- /dev/null +++ b/projects/project_noiseficurves/Makefile @@ -0,0 +1,10 @@ +latex: + pdflatex *.tex > /dev/null + pdflatex *.tex > /dev/null + +clean: + rm -rf *.log *.aux *.zip *.out auto + rm -f `basename *.tex .tex`.pdf + +zip: latex + zip `basename *.tex .tex`.zip *.pdf *.dat *.mat *.m diff --git a/projects/project_noiseficurves/lifspikes.m b/projects/project_noiseficurves/lifspikes.m new file mode 100644 index 0000000..cfa0f55 --- /dev/null +++ b/projects/project_noiseficurves/lifspikes.m @@ -0,0 +1,38 @@ +function spikes = lifspikes( trials, input, tmaxdt, D ) +% Generate spike times of a leaky integrate-and-fire neuron +% 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 + + tau = 0.01; + if nargin < 4 + D = 1e0; + end + vreset = 0.0; + vthresh = 10.0; + dt = 1e-4; + + if length( 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; + noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt); + for i=1:length( noise ) + v = v + ( - v + noise(i) + input(i))*dt/tau; + if v >= vthresh + v = vreset; + times(j) = i*dt; + j = j + 1; + end + end + spikes{k} = times; + end +end diff --git a/projects/project_noiseficurves/noiseficurves.tex b/projects/project_noiseficurves/noiseficurves.tex new file mode 100644 index 0000000..dc68952 --- /dev/null +++ b/projects/project_noiseficurves/noiseficurves.tex @@ -0,0 +1,91 @@ +\documentclass[addpoints,10pt]{exam} +\usepackage{url} +\usepackage{color} +\usepackage{hyperref} + +\pagestyle{headandfoot} +\runningheadrule +\firstpageheadrule +\firstpageheader{Scientific Computing}{Project Assignment}{11/05/2014 + -- 11/06/2014} +%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014} +\firstpagefooter{}{}{} +\runningfooter{}{}{} +\pointsinmargin +\bracketedpoints + +%\printanswers +%\shadedsolutions + +%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{listings} +\lstset{ + basicstyle=\ttfamily, + numbers=left, + showstringspaces=false, + language=Matlab, + breaklines=true, + breakautoindent=true, + columns=flexible, + frame=single, +% captionpos=t, + xleftmargin=2em, + xrightmargin=1em, +% aboveskip=10pt, + %title=\lstname, +% title={\protect\filename@parse{\lstname}\protect\filename@base.\protect\filename@ext} + } + + +\begin{document} +%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%% +\sffamily +% \begin{flushright} +% \gradetable[h][questions] +% \end{flushright} + +\begin{center} + \input{../disclaimer.tex} +\end{center} + +%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{questions} + \question You are recording the activity of a neuron in response to + constant stimuli of intensity $I$ (think of that, for example, + of sound waves with intensities $I$). + + Measure the tuning curve (also called the intensity-response curve) of the + neuron. That is, what is the firing rate of the neuron's response + as a function of the input $I$. How does this depend on the level of + the intrinsic noise of the neuron? + + \begin{parts} + \part The neuron is implemented in the file \texttt{lifspikes.m}. + Call it with the following parameters: + \begin{lstlisting} + trials = 10; + tmax = 50.0; + input = 10.0; % the input I + Dnoise = 1.0; % noise strength + + spikes = lifspikes( trials, input, tmax, Dnoise ); + \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. + The input is set via the \texttt{input} variable, the noise strength via \texttt{Dnoise}. + + \part First set the noise \texttt{Dnoise=0} (no noise). Compute and plot the firing rate + as a function of the input for inputs ranging from 0 to 20. + + \part Do the same for various noise strength \texttt{Dnoise}. Use $D_{noise} = 1e-3$, + 1e-2, and 1e-1. How does the intrinsic noise influence the response curve? + + \part Show some interspike interval histograms for some interesting values of the input + and the noise strength. + + \end{parts} + +\end{questions} + +\end{document} diff --git a/projects/project_numbers/numbers.tex b/projects/project_numbers/numbers.tex old mode 100755 new mode 100644 diff --git a/projects/project_onset_fi/onset_fi.tex b/projects/project_onset_fi/onset_fi.tex old mode 100755 new mode 100644 diff --git a/projects/project_q-values/qvalues.tex b/projects/project_q-values/qvalues.tex old mode 100755 new mode 100644 diff --git a/projects/project_spectra/spectra.tex b/projects/project_spectra/spectra.tex old mode 100755 new mode 100644 diff --git a/projects/project_steady_fi/steady_state_fi.tex b/projects/project_steady_fi/steady_state_fi.tex old mode 100755 new mode 100644 diff --git a/projects/project_stimulus_reconstruction/stimulus_reconstruction.tex b/projects/project_stimulus_reconstruction/stimulus_reconstruction.tex old mode 100755 new mode 100644 diff --git a/projects/project_template/Makefile b/projects/project_template/Makefile index dad25ce..6422eb4 100644 --- a/projects/project_template/Makefile +++ b/projects/project_template/Makefile @@ -7,4 +7,4 @@ clean: rm -f `basename *.tex .tex`.pdf zip: latex - zip `basename *.tex .tex`.zip *.pdf *.dat *.mat + zip `basename *.tex .tex`.zip *.pdf *.dat *.mat *.m diff --git a/projects/project_template/template.tex b/projects/project_template/template.tex old mode 100755 new mode 100644