diff --git a/announcements/correlationcartoon.jpeg b/announcements/correlationcartoon.jpeg new file mode 100644 index 0000000..a9b3823 Binary files /dev/null and b/announcements/correlationcartoon.jpeg differ diff --git a/announcements/evalutation.pdf b/announcements/evalutation.pdf new file mode 100644 index 0000000..ec41ac7 Binary files /dev/null and b/announcements/evalutation.pdf differ diff --git a/announcements/evalutation.tex b/announcements/evalutation.tex new file mode 100644 index 0000000..c528f4f --- /dev/null +++ b/announcements/evalutation.tex @@ -0,0 +1,60 @@ +\documentclass[pdftex]{beamer} +\usepackage{beamerthemedefault} +\usepackage{multimedia} +\usepackage{wasysym} +\useoutertheme[subsection=false]{smoothbars} +\useinnertheme[shadow=true]{rounded} + +\setbeamercolor{block title}{fg=black,bg=gray} +\setbeamercolor{block title alerted}{use=alerted text,fg=black,bg=alerted text.fg!75!bg} +\setbeamercolor{block title example}{use=example text,fg=black,bg=example text.fg!75!bg} +\setbeamercolor{block body}{parent=normal text,use=block title,bg=block title.bg!25!bg} +\setbeamercolor{block body alerted}{parent=normal text,use=block title alerted,bg=block title alerted.bg!25!bg} +\setbeamercolor{block body example}{parent=normal text,use=block title example,bg=block title example.bg!25!bg} + +\usepackage{hyperref} +\usepackage[english]{babel} % language set to new-german +\usepackage[utf8]{inputenc} % coding of german special characters +\usepackage{graphicx} % \includegraphics[options]{file.eps} +\usepackage{array} +\usepackage{setspace} +\usepackage{color} +\usepackage{eqlist} +\usepackage{wallpaper} + +\definecolor{tug}{HTML}{CC0000} +\newcommand{\rot}[1]{{\color{tug} #1}} +\definecolor{green}{HTML}{1C8C1C} +\newcommand{\gruen}[1]{{\color{green} #1}} +\definecolor{blue}{HTML}{2424AA} +\newcommand{\blau}[1]{{\color{blue} #1}} +\definecolor{gray}{rgb}{0.8,0.8,0.8} +\definecolor{gray2}{rgb}{0.5,0.5,0.5} +\definecolor{gray2}{rgb}{0.5,0.5,0.5} +\newcommand{\grau}[1]{{\color{gray2} #1}} + +\setbeamercolor{footline}{fg=black,bg=gray} + +%\setbeamertemplate{headline}[text line]{ +% \begin{beamercolorbox}[wd=\paperwidth,ht=8ex,dp=4ex]{}%\vskip-4pt +% \insertnavigation{0.85\paperwidth} +% \hskip-1pt\rule{\paperwidth}{0.3pt} +% \end{beamercolorbox} +%} + +\setlength{\unitlength}{0.01\paperwidth} + +\setbeamercolor{background canvas}{bg=} + + +\begin{document} + +\begin{frame} + \frametitle{Evalutation} + In Ilias:\\[2ex] + Go to {\em Evaluation} and fill out the forms!\\[6ex] + \includegraphics[width=0.8\textwidth]{correlationcartoon} +\end{frame} + + +\end{document} diff --git a/linearalgebra/code/Chorthippus_biguttulus.wav b/linearalgebra/code/Chorthippus_biguttulus.wav new file mode 100644 index 0000000..2c57068 Binary files /dev/null and b/linearalgebra/code/Chorthippus_biguttulus.wav differ diff --git a/linearalgebra/code/PeterUndDerWolf.wav b/linearalgebra/code/PeterUndDerWolf.wav new file mode 100644 index 0000000..80aab98 Binary files /dev/null and b/linearalgebra/code/PeterUndDerWolf.wav differ diff --git a/linearalgebra/code/Tielli-Kraulis.wav b/linearalgebra/code/Tielli-Kraulis.wav new file mode 100644 index 0000000..8ad071a Binary files /dev/null and b/linearalgebra/code/Tielli-Kraulis.wav differ diff --git a/linearalgebra/code/coordinaterafo2.m b/linearalgebra/code/coordinaterafo2.m new file mode 100644 index 0000000..054ac6d --- /dev/null +++ b/linearalgebra/code/coordinaterafo2.m @@ -0,0 +1,52 @@ +% some vectors: +x = [ -1:0.02:1 ]; +y = x*0.5 + 0.1*randn( size(x) ); +plot( x, y, '.b' ); +hold on +plot( x(10), y(10), '.r' ); + +% new coordinate system: +%e1 = [ 3/5 4/5 ]; +%e2 = [ -4/5 3/5 ]; +e1 = [ 3 4 ]; +e2 = [ -4 3 ]; +me1 = sqrt( e1*e1' ); +e1 = e1/me1; +me2 = sqrt( e2*e2' ); +e2 = e2/me2; +quiver( 0.0, 0.0 , e1(1), e1(2), 1.0, 'r' ) +quiver( 0.0, 0.0 , e2(1), e2(2), 1.0, 'g' ) +axis( 'equal' ) + +% project [x y] onto e1 and e2: + +% % the long way: +% nx = zeros( size( x ) ); % new x coordinate +% ny = zeros( size( y ) ); % new y coordinates +% for k=1:length(x) +% xvec = [ x(k) y(k) ]; +% nx(k) = xvec * e1'; +% ny(k) = xvec * e2'; +% end +% plot( nx, ny, '.g' ); + +% the short way: +%nx = [ x' y' ] * e1'; +%nx = [x; y]' * e1'; +% nx = e1 * [ x; y ]; +% ny = e2 * [ x; y ]; +% plot( nx, ny, '.g' ); + +% even shorter: +n = [e1; e2 ] * [ x; y ]; +plot( n(1,:), n(2,:), '.g' ); + + + + + + + + + +hold off diff --git a/linearalgebra/code/coordinatetrafo.m b/linearalgebra/code/coordinatetrafo.m new file mode 100644 index 0000000..7c8507c --- /dev/null +++ b/linearalgebra/code/coordinatetrafo.m @@ -0,0 +1,37 @@ +% some vectors: +x=[-1:0.02:1]'; % column vector! +y=4*x/3 + 0.1*randn( size( x ) ); +plot( x, y, '.b' ); +axis( 'equal' ); +hold on; + +% new coordinate system: +% e1 = [ 3 4 ] +% e2 = [ -4 3 ] +% and normalized to unit length (factor 1/5): +e = [ 3/5 -4/5; 4/5 3/5 ]; +quiver( [0 0], [0 0], e(1,:), e(2,:), 1.0, 'r' ); + +% project [x y] onto e1 and e2: + +% % the long way: +% nx = x; +% ny = y; +% for k=1:length(x) +% nx(k) = [x(k) y(k)]*e(:,1); +% ny(k) = [x(k) y(k)]*e(:,2); +% end +% plot( nx, ny, '.g' ); + +% the short way +% nx = [x y]*e(:,1); +% ny = [x y]*e(:,2); +% plot( nx, ny, '.g' ); + +% even shorter: +n = [x y]*e; +plot( n(:,1), n(:,2), '.g' ); +xlabel( 'x' ); +ylabel( 'y' ); + +hold off; diff --git a/linearalgebra/code/correlationcoefficient.m b/linearalgebra/code/correlationcoefficient.m new file mode 100644 index 0000000..55472ab --- /dev/null +++ b/linearalgebra/code/correlationcoefficient.m @@ -0,0 +1,29 @@ +set( 0, 'DefaultTextFontSize', 22.0 ); +set( 0, 'DefaultAxesFontSize', 22.0 ); + +n = 10000; +x = 1.0*randn( n, 1 ); +z = 1.0*randn( n, 1 ); +for r=-1:0.2:1 + y = r*x + sqrt(1.0-r^2.0)*z; + cv = cov( x, y ); + cr = corrcoef( x, y ); + scatter( x, y, 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'x' ); + ylabel( 'y' ); + text( 0.05, 0.9, sprintf( 'r = %.2f', r ), 'Units', 'normalized' ) + text( 0.05, 0.8, sprintf( 'cor = %.2f %.2f', cr(1,1), cr(1,2) ), 'Units', 'normalized' ) + text( 0.05, 0.7, sprintf( 'cov = %.2f %.2f', cv(1,1), cv(1,2) ), 'Units', 'normalized' ) + waitforbuttonpress; +end + +y = x.^2.0 + 0.5*z; +cv = cov( x, y ); +cr = corrcoef( x, y ); +scatter( x, y, 'filled', 'MarkerEdgeColor', 'white' ); +xlabel( 'x' ); +ylabel( 'y' ); +text( 0.05, 0.9, sprintf( 'x^2', r ), 'Units', 'normalized' ) +text( 0.05, 0.8, sprintf( 'cor = %.2f %.2f', cr(1,1), cr(1,2) ), 'Units', 'normalized' ) +text( 0.05, 0.7, sprintf( 'cov = %.2f %.2f', cv(1,1), cv(1,2) ), 'Units', 'normalized' ) + diff --git a/linearalgebra/simulations/covareigen.m b/linearalgebra/code/covareigen.m similarity index 83% rename from linearalgebra/simulations/covareigen.m rename to linearalgebra/code/covareigen.m index 1acf330..cd6025f 100644 --- a/linearalgebra/simulations/covareigen.m +++ b/linearalgebra/code/covareigen.m @@ -44,11 +44,16 @@ function covareigen( x, y, pm, w, h ) % plot eigenvectors: quiver( ones( 1, 2 ).*mean( x ), ones( 1, 2 )*mean(y), v(1,:).*sqrt(diag(d))', v(2,:).*sqrt(diag(d))', 'r', 'LineWidth', 3, 'AutoScale', 'off', 'AutoScaleFactor', 1.0, 'MaxHeadSize', 0.7 ) + xlabel( 'x' ); + ylabel( 'y' ); axis( 'equal' ); hold off; + % histogram of x values: subplot( 2, 2, 3 ); hist( x, 50, 'b' ); + xlabel( 'x' ); + ylabel( 'n_x' ); % sort the eigenvalues: [d,inx] = sort( diag(d), 'descend' ); @@ -59,24 +64,28 @@ function covareigen( x, y, pm, w, h ) x = x - mean( x ); y = y - mean( y ); % project onto eigenvectors: - nx = [ x y ] * v(:,inx(1)); - ny = [ x y ] * v(:,inx(2)); - cv = cov( [nx, ny] ) + nc = [ x y ] * v(:,inx); + cv = cov( nc ) [ v , d] = eig( cv ) if (pm > 0) & (nargin == 5) if pm == 1 - [n,c] = hist3([nx ny], { xp, yp } ); + [n,c] = hist3( nc, { xp, yp } ); contourf( c{1}, c{2}, n' ); else gauss = reshape( exp(-0.5*diag(xy*inv(cv)*xy'))/sqrt((2.0*pi)^2.0*det(cv)), size( xg ) ); contourf( xp, yp, gauss ) end else - scatter( nx, ny, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + scatter( nc(:,1), nc(:,2), 'b', 'filled', 'MarkerEdgeColor', 'white' ); end + xlabel( 'x' ); + ylabel( 'y' ); axis( 'equal' ); hold off; + % histogram of new x values: subplot( 2, 2, 4 ); - hist( nx, 50, 'b' ); + hist( nc(:,1), 50, 'b' ); + xlabel( 'new x' ); + ylabel( 'n_newx' ); end diff --git a/linearalgebra/simulations/covareigen3.m b/linearalgebra/code/covareigen3.m similarity index 64% rename from linearalgebra/simulations/covareigen3.m rename to linearalgebra/code/covareigen3.m index c11f2de..636d9cb 100644 --- a/linearalgebra/simulations/covareigen3.m +++ b/linearalgebra/code/covareigen3.m @@ -20,25 +20,40 @@ function covareigen3( x, y, z ) ylabel( 'y' ); zlabel( 'z' ); grid on; - + % plot eigenvectors: quiver3( ones( 1, 3 ).*mean( x ), ones( 1, 3 )*mean(y), ones( 1, 3 )*mean(z), v(1,:).*sqrt(diag(d))', v(2,:).*sqrt(diag(d))', v(3,:).*sqrt(diag(d))', 'r', 'LineWidth', 3, 'AutoScale', 'off', 'AutoScaleFactor', 1.0, 'MaxHeadSize', 0.7 ) %axis( 'equal' ); hold off; + % 2D scatter plots: + subplot( 2, 6, 4 ); + scatter( x, y, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'x' ) + ylabel( 'y' ) + subplot( 2, 6, 5 ); + scatter( x, z, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'x' ) + ylabel( 'z' ) + subplot( 2, 6, 6 ); + scatter( y, z, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'y' ) + ylabel( 'z' ) + % sort the eigenvalues: [d,inx] = sort( diag(d), 'descend' ); - subplot( 2, 2, 2 ); + subplot( 2, 2, 4 ); hold on; % subtract means: x = x - mean( x ); y = y - mean( y ); % project onto eigenvectors: - nx = [ x y z ] * v(:,inx(1)); - ny = [ x y z ] * v(:,inx(2)); - scatter( nx, ny, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + nx = [ x y z ] * v(:,inx); + scatter( nx(:,1), nx(:,2), 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'ex' ) + ylabel( 'ey' ) axis( 'equal' ); hold off; diff --git a/linearalgebra/code/covareigen3examples.m b/linearalgebra/code/covareigen3examples.m new file mode 100644 index 0000000..f27c76c --- /dev/null +++ b/linearalgebra/code/covareigen3examples.m @@ -0,0 +1,19 @@ +scrsz = get( 0, 'ScreenSize' ); +set( 0, 'DefaultFigurePosition', [ scrsz(3)/2 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2 ] ); + +n = 10000; + +% three distributions: +x = randn( n, 1 ); +y = randn( n, 1 ); +z = randn( n, 1 ); +dx = [ 0 8 0 0 ]; +dy = [ 0 0 8 0 ]; +dz = [ 0 0 0 8 ]; +for k = 1:4 + x((k-1)*n/4+1:k*n/4) = x((k-1)*n/4+1:k*n/4) + dx(k); + y((k-1)*n/4+1:k*n/4) = y((k-1)*n/4+1:k*n/4) + dy(k); + z((k-1)*n/4+1:k*n/4) = z((k-1)*n/4+1:k*n/4) + dz(k); +end +f = figure( 1 ); +covareigen3( x, y, z ); diff --git a/linearalgebra/simulations/covareigenexamples.m b/linearalgebra/code/covareigenexamples.m similarity index 88% rename from linearalgebra/simulations/covareigenexamples.m rename to linearalgebra/code/covareigenexamples.m index f360e8c..2f7a480 100644 --- a/linearalgebra/simulations/covareigenexamples.m +++ b/linearalgebra/code/covareigenexamples.m @@ -5,11 +5,11 @@ set( 0, 'DefaultFigurePosition', [ scrsz(3)/2 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2 ] n = 10000; x = randn( n, 1 ); f = figure( 1 ); -for r = 0.01:0.199:1 +for r = 0.01:0.19:1 fprintf( 'Correlation = %g\n', r ); clf( f ); y = r*x + sqrt(1-r^2)*randn( n, 1 ); - covareigen( x, y, 2, 5.0, 3.0 ); + covareigen( x, y, 0, 5.0, 3.0 ); key = waitforbuttonpress; end return @@ -29,7 +29,7 @@ for d = 0:1:5 x = [ x1; x2 ]; y = [ y1+d2; y2-d2 ]; scrsz = get(0,'ScreenSize'); - covareigen( x, y, 1, 10.0, 7.0 ); + covareigen( x, y, 0, 10.0, 7.0 ); %key = waitforbuttonpress; pause( 1.0 ); end diff --git a/linearalgebra/code/extdata.mat b/linearalgebra/code/extdata.mat new file mode 100644 index 0000000..619c0c1 Binary files /dev/null and b/linearalgebra/code/extdata.mat differ diff --git a/linearalgebra/code/extracellularrecording.m b/linearalgebra/code/extracellularrecording.m new file mode 100644 index 0000000..8488cd1 --- /dev/null +++ b/linearalgebra/code/extracellularrecording.m @@ -0,0 +1,54 @@ +% this script simulates extracellularly recorded +% spike waveforms and saves them in extdata.mat. + +% generate spikes: +n = 1000; +misi = 0.01; +isis = exprnd( misi, n, 1 ); +isis = isis + 0.01; +spikes = cumsum( isis ); +p = rand( size( spikes ) ); + +% spike waveforms: +dt = 0.0001; +waveformt = -0.01:dt:0.01; +waveform1 = 2.0*exp( -(waveformt-0.0003).^2/2.0/0.0005^2 ) - 1.4*exp( -(waveformt-0.0005).^2/2.0/0.0005^2 ); +waveform2 = exp( -waveformt.^2/2.0/0.002^2 ).*cos(2.0*pi*waveformt/0.005); +p12 = 0.5; + +% voltage trace: +noise = 0.2; +time = 0:dt:spikes(end)+3.0*waveformt(end); +voltage = noise*randn( 1, length( time ) ); +for k = 1:length( spikes ) + inx = ceil( spikes(k)/dt ); + if p(k) < p12 + voltage(inx:inx+length(waveformt)-1) = voltage(inx:inx+length(waveformt)-1) + waveform1; + else + voltage(inx:inx+length(waveformt)-1) = voltage(inx:inx+length(waveformt)-1) + waveform2; + end +end + +figure( 1 ); +clf; +plot( time(time<1.0), voltage(time<1.0) ); +hold on; + +% find peaks: +thresh = 0.7; +inx = find( voltage(2:end-1) > thresh & voltage(1:end-2)<voltage(2:end-1) & voltage(2:end-1) > voltage(3:end) ) + 1; +spiketimes = time(inx); +spikevoltage = voltage(inx); +tinx = inx; +for k=1:2 + inx = find( ( spiketimes(2:end-1)-spiketimes(1:end-2)>0.005 | spikevoltage(2:end-1) > spikevoltage(1:end-2) ) & ( spiketimes(3:end)-spiketimes(2:end-1)>0.005 | spikevoltage(2:end-1) > spikevoltage(3:end) ) )+1; + spiketimes = spiketimes(inx); + spikevoltage = spikevoltage(inx); + tinx = tinx(inx); +end +scatter( spiketimes(spiketimes<1.0), spikevoltage(spiketimes<1.0), 100.0, 'r', 'filled' ); +%scatter( t(tinx), v(tinx), 100.0, 'r', 'filled' ); +hold off; + +% save data to file: +save( 'extdata', 'time', 'voltage', 'spiketimes', 'waveformt', 'waveform1', 'waveform2' ); diff --git a/linearalgebra/code/gaussian.m b/linearalgebra/code/gaussian.m new file mode 100644 index 0000000..cdac6d5 --- /dev/null +++ b/linearalgebra/code/gaussian.m @@ -0,0 +1,25 @@ +% Gaussian density from histogram: +x = randn( 1000000, 1 ); +[ n, c ] = hist( x, 100 ); +n = n/sum(n)/(c(2)-c(1)); +bar( c, n ); +hold on; +% equation p(x): +xx = -5:0.01:5; +p=exp(-xx.^2/2.0)/sqrt(2.0*pi); +plot( xx, p, 'r', 'LineWidth', 3 ) + +% with mean=2 and sigma=0.5: +mu = 2.0; +sig = 0.5; +x = sig*x + mu; +[ n, c ] = hist( x, 100 ); +n = n/sum(n)/(c(2)-c(1)); +bar( c, n ); +% equation: +p=exp(-(xx-mu).^2/2.0/sig^2)/sqrt(2.0*pi*sig^2); +plot( xx, p, 'r', 'LineWidth', 3 ) +hold off; +xlabel( 'x' ); +ylabel( 'p(x)' ); +title( 'Gaussian distribution' ); diff --git a/linearalgebra/code/matrix2dtrafos.m b/linearalgebra/code/matrix2dtrafos.m new file mode 100644 index 0000000..2bd7546 --- /dev/null +++ b/linearalgebra/code/matrix2dtrafos.m @@ -0,0 +1,21 @@ +% Visualize some common matrix transformations +% in a 2D coordinate system + +disp( 'Click into the plot to advance to the next matrix' ) +matrixbox( [ 1 0; 0 1], 'Identity' ); +matrixbox( [ 2 0; 0 1], 'Scale x' ); +matrixbox( [ 1 0; 0 2], 'Scale y' ); +matrixbox( [ 2 0; 0 2], 'Scale x and y' ); +matrixbox( [ 0.5 0; 0 0.5], 'Scale x and y' ); +matrixbox( [ -1 0; 0 1], 'Flip x' ); +matrixbox( [ 1 0; 0 -1], 'Flip y' ); +matrixbox( [ -1 0; 0 -1], 'Flip both' ); +matrixbox( [ 1 2; 0 1], 'Shear x' ); +matrixbox( [ 1 0; 2 1], 'Shear y' ); +matrixbox( [ 0.5 1; 1 0.5], 'Something A' ); +matrixbox( [ 0.5 1; 1.2 0.6], 'Something B' ); +% rotation matrices: +for deg = 0:10:360 + phi = deg*pi/180.0; + matrixbox( [ cos(phi) -sin(phi); sin(phi) cos(phi)], sprintf( 'Rotate %.0f', deg ) ); +end diff --git a/linearalgebra/code/matrixbox.m b/linearalgebra/code/matrixbox.m new file mode 100644 index 0000000..6cc0aa1 --- /dev/null +++ b/linearalgebra/code/matrixbox.m @@ -0,0 +1,45 @@ +function matrixbox( m, s ) +% visualizes the effect of a matrix m on a set of vectors forming a box +% m: a 2x2 matrix +% s: a string plotted as the title of the plot +% this function is called by matrix2dtrafos.m + + % the 5 vectors that point into the cornes of a unit square: + v = [ 0 1 1 0 0; + 0 0 1 1 0 ]; + % transform v by means of m into new vector w: + w = m*v; + clf; + hold on; + % axis: + plot( [-2 2], [0 0], 'k', 'LineWidth', 1 ); + plot( [0 0], [-2 2], 'k', 'LineWidth', 1 ); + % old vectors: + plot( v(1,:), v(2,:), 'k', 'LineWidth', 1.0 ) + quiver( v(1,1), v(2,1), v(1,3), v(2,3), 1.0, 'k', 'LineWidth', 2.0 ); + scatter( v(1,2), v(2,2), 60.0, 'filled', 'k' ); + % transformed vectors: + plot( w(1,:), w(2,:), 'b', 'LineWidth', 2.0 ) + quiver( w(1,1), w(2,1), w(1,3), w(2,3), 1.0, 'b', 'LineWidth', 3.0 ); + scatter( w(1,2), w(2,2), 100.0, 'filled', 'b' ); + % eigenvectors: + [ev ed] = eig(m); + n = ev*ed; + if isreal( n ) + quiver( [0 0], [0 0], n(1,:), n(2,:), 1.0, 'r', 'LineWidth', 2.0 ); + text( 0.1, 0.2, sprintf( '\\lambda_1 = %.3g', ed(1,1) ), 'Units', 'normalized' ) + text( 0.1, 0.1, sprintf( '\\lambda_2 = %.3g', ed(2,2) ), 'Units', 'normalized' ) + end + hold off; + xlim( [ -2 2 ] ); + ylim( [ -2 2 ] ); + axis( 'equal' ); + m( abs(m) < 1e-3 ) = 0.0; % make zeros really a zero + text( 0.7, 0.15, 'A =', 'Units', 'normalized' ) + text( 0.8, 0.2, sprintf( '%.3g', m(1,1) ), 'Units', 'normalized' ) + text( 0.9, 0.2, sprintf( '%.3g', m(1,2) ), 'Units', 'normalized' ) + text( 0.8, 0.1, sprintf( '%.3g', m(2,1) ), 'Units', 'normalized' ) + text( 0.9, 0.1, sprintf( '%.3g', m(2,2) ), 'Units', 'normalized' ) + title( s ); + waitforbuttonpress; +end diff --git a/linearalgebra/code/matrixmultiplicationlatex.m b/linearalgebra/code/matrixmultiplicationlatex.m new file mode 100644 index 0000000..dbb66de --- /dev/null +++ b/linearalgebra/code/matrixmultiplicationlatex.m @@ -0,0 +1,85 @@ +% open a file to write in the LaTeX commands: +f = fopen( 'matrices.tex','w'); +fprintf( f, '\\documentclass{exam}\n' ); +fprintf( f, '\\usepackage{amsmath}\n' ); +fprintf( f, '\\begin{document}\n' ); + +for k = 1:40 + + % compute row and column numbers: + pd = rand( 1, 1 ); + if pd < 0.05 + % row vector multiplication that might not be possible: + am = 1; + an = randi( [ 2 4 ]); + bm = randi( [ 2 4 ]); + bn = 1; + elseif pd < 0.1 + % column vector multiplication that might not be possible: + am = randi( [ 2 4 ]); + an = 1; + bm = 1; + bn = randi( [ 2 4 ]); + elseif pd < 0.4 + % row vector multiplication that is possible: + am = 1; + an = randi( [ 2 4 ]); + bm = an; + bn = 1; + elseif pd < 0.5 + % column vector multiplication that is possible: + am = randi( [ 2 4 ]); + an = 1; + bm = 1; + bn = am; + elseif pd < 0.6 + % matrix multiplication that might not be possible: + am = randi( [ 2 4 ]); + an = randi( [ 2 4 ]); + bm = randi( [ 2 4 ]); + bn = randi( [ 2 4 ]); + else + % matrix multiplication that is possible: + am = randi( [ 2 4 ]); + an = randi( [ 2 4 ]); + bm = an; + bn = randi( [ 2 4 ]); + end + % generate the matrices: + a = randi( [-4 4], am, an ); + b = randi( [-4 4], bm, bn ); + % write them out as LaTeX code: + % matrix a: + fprintf( f, ' \\[ \\begin{pmatrix}' ); + for r = 1:size( a, 1 ) + for c = 1:size( a, 2 ) + if c > 1 + fprintf( f, ' &' ); + end + fprintf( f, ' %d', a(r,c) ); + end + if r < size( a, 1 ) + fprintf( f, ' \\\\' ); + end + end + fprintf( f, ' \\end{pmatrix} \\cdot\n' ); + % matrix b: + fprintf( f, ' \\begin{pmatrix}' ); + for r = 1:size( b, 1 ) + for c = 1:size( b, 2 ) + if c > 1 + fprintf( f, ' &' ); + end + fprintf( f, ' %d', b(r,c) ); + end + if r < size( b, 1 ) + fprintf( f, ' \\\\' ); + end + end + fprintf( f, ' \\end{pmatrix} = \\]\n\n' ); + +end + +% close the document and the file: +fprintf( f, '\\end{document}\n' ); +fclose( f ); diff --git a/linearalgebra/code/p-unit_spike_times.mat b/linearalgebra/code/p-unit_spike_times.mat new file mode 100644 index 0000000..75f53e6 Binary files /dev/null and b/linearalgebra/code/p-unit_spike_times.mat differ diff --git a/linearalgebra/code/p-unit_stimulus.mat b/linearalgebra/code/p-unit_stimulus.mat new file mode 100644 index 0000000..b6d0b25 Binary files /dev/null and b/linearalgebra/code/p-unit_stimulus.mat differ diff --git a/linearalgebra/code/pca2d.m b/linearalgebra/code/pca2d.m new file mode 100644 index 0000000..6879f8a --- /dev/null +++ b/linearalgebra/code/pca2d.m @@ -0,0 +1,95 @@ +function pca2d( x, y, pm, w, h ) +% computes covariance matrix from the pairs x, y +% diagonalizes covariance matrix, i.e. performs a PCA on [ x, y ] +% x and y are column vectors +% pm: 0 - scatter of data, 1 - histogram, 2 - multivariate gauss from +% covariance matrix, 1 and 2 require w and h +% w and h are the width and the height (in data units) for plotting +% histograms instead of scatter + + % covariance matrix: + cv = cov( [ x y ] ); + + % eigen values: + [ v , d] = eig( cv ) + s = sign( v ); + s(1,:) = s(2,:); + v = v .* s; + + % plots: + subplot( 2, 2, 1 ); + hold on; + + if (pm > 0) & (nargin == 5) + if pm == 1 + % histogram of data: + xp = -w:0.5:w; + yp = -h:0.5:h; + [n,c] = hist3([x y], { xp, yp } ); + contourf( c{1}, c{2}, n' ); + else + % bivariate Gaussian: + xp = -w:0.1:w; + yp = -h:0.1:h; + [xg,yg] = meshgrid( xp, yp ); + xy = [ xg(:) yg(:) ]; + gauss = reshape( exp(-0.5*diag(xy*inv(cv)*xy'))/sqrt((2.0*pi)^2.0*det(cv)), size( xg ) ); + contourf( xp, yp, gauss ) + end + colormap( 'gray' ); + else + % scatter plot: + scatter( x, y, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + end + + % plot eigenvectors: + quiver( ones( 1, 2 ).*mean( x ), ones( 1, 2 )*mean(y), v(1,:).*sqrt(diag(d))', v(2,:).*sqrt(diag(d))', 'r', 'LineWidth', 3, 'AutoScale', 'off', 'AutoScaleFactor', 1.0, 'MaxHeadSize', 0.7 ) + + xlabel( 'x' ); + ylabel( 'y' ); + axis( 'equal' ); + hold off; + + % histogram of x values: + subplot( 2, 2, 3 ); + hist( x, 50, 'b' ); + xlabel( 'x' ); + ylabel( 'count' ); + + % sort the eigenvalues: + [d,inx] = sort( diag(d), 'descend' ); + + subplot( 2, 2, 2 ); + hold on; + % subtract means: + x = x - mean( x ); + y = y - mean( y ); + % project onto eigenvectors: + nc = [ x y ] * v(:,inx); + cv = cov( nc ) + [ v , d] = eig( cv ) + if (pm > 0) & (nargin == 5) + if pm == 1 + % histogram of data: + [n,c] = hist3( nc, { xp, yp } ); + contourf( c{1}, c{2}, n' ); + else + % bivariate Gaussian: + gauss = reshape( exp(-0.5*diag(xy*inv(cv)*xy'))/sqrt((2.0*pi)^2.0*det(cv)), size( xg ) ); + contourf( xp, yp, gauss ) + end + else + % scatter plot: + scatter( nc(:,1), nc(:,2), 'b', 'filled', 'MarkerEdgeColor', 'white' ); + end + xlabel( 'n_x' ); + ylabel( 'n_y' ); + axis( 'equal' ); + hold off; + + % histogram of new x values: + subplot( 2, 2, 4 ); + hist( nc(:,1), 50, 'b' ); + xlabel( 'n_x' ); + ylabel( 'count' ); +end diff --git a/linearalgebra/code/pca2dexamples.m b/linearalgebra/code/pca2dexamples.m new file mode 100644 index 0000000..252ceda --- /dev/null +++ b/linearalgebra/code/pca2dexamples.m @@ -0,0 +1,33 @@ +scrsz = get( 0, 'ScreenSize' ); +set( 0, 'DefaultFigurePosition', [ scrsz(3)/2 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2 ] ); + +% correlation coefficients: +n = 10000; +x = randn( n, 1 ); +f = figure( 1 ); +for r = 0.01:0.19:1 + fprintf( 'Correlation = %g\n', r ); + clf( f ); + y = r*x + sqrt(1-r^2)*randn( n, 1 ); + pca2d( x, y, 0, 5.0, 3.0 ); + waitforbuttonpress; +end + +% two distributions: +n = 10000; +x1 = randn( n/2, 1 ); +y1 = randn( n/2, 1 ); +x2 = randn( n/2, 1 ); +y2 = randn( n/2, 1 ); +f = figure( 1 ); +pause( 'on' ); +for d = 0:1:5 + fprintf( 'Distance = %g\n', d ); + clf( f ); + d2 = d / sqrt( 2.0 ); + x = [ x1; x2 ]; + y = [ y1+d2; y2-d2 ]; + scrsz = get(0,'ScreenSize'); + pca2d( x, y, 0, 10.0, 7.0 ); + waitforbuttonpress; +end diff --git a/linearalgebra/code/pca3d.m b/linearalgebra/code/pca3d.m new file mode 100644 index 0000000..6f2a6bd --- /dev/null +++ b/linearalgebra/code/pca3d.m @@ -0,0 +1,60 @@ +function pca3d( x, y, z ) +% computes covariance matrix from the triples x, y, z +% diagonalizes covariance matrix, i.e. performs pca on [ x, y, z ] +% x, y and z are column vectors + + % covariance matrix: + cv = cov( [ x y z ] ); + + % eigen values: + [ v , d] = eig( cv ) + + % plots: + subplot( 1, 2, 1 ); + hold on; + + % scatter plot: + view( 3 ); + scatter3( x, y, z, 0.1, 'b', 'filled', 'MarkerEdgeColor', 'blue' ); + xlabel( 'x' ); + ylabel( 'y' ); + zlabel( 'z' ); + grid on; + + % plot eigenvectors: + quiver3( ones( 1, 3 ).*mean( x ), ones( 1, 3 )*mean(y), ones( 1, 3 )*mean(z), v(1,:).*sqrt(diag(d))', v(2,:).*sqrt(diag(d))', v(3,:).*sqrt(diag(d))', 'r', 'LineWidth', 3, 'AutoScale', 'off', 'AutoScaleFactor', 1.0, 'MaxHeadSize', 0.7 ) + + %axis( 'equal' ); + hold off; + + % 2D scatter plots: + subplot( 2, 6, 4 ); + scatter( x, y, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'x' ) + ylabel( 'y' ) + subplot( 2, 6, 5 ); + scatter( x, z, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'x' ) + ylabel( 'z' ) + subplot( 2, 6, 6 ); + scatter( y, z, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'y' ) + ylabel( 'z' ) + + % sort the eigenvalues: + [d,inx] = sort( diag(d), 'descend' ); + + subplot( 2, 2, 4 ); + hold on; + % subtract means: + x = x - mean( x ); + y = y - mean( y ); + % project onto eigenvectors: + nx = [ x y z ] * v(:,inx); + scatter( nx(:,1), nx(:,2), 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'ex' ) + ylabel( 'ey' ) + axis( 'equal' ); + hold off; + +end diff --git a/linearalgebra/code/pca3dexamples.m b/linearalgebra/code/pca3dexamples.m new file mode 100644 index 0000000..d2d790f --- /dev/null +++ b/linearalgebra/code/pca3dexamples.m @@ -0,0 +1,19 @@ +scrsz = get( 0, 'ScreenSize' ); +set( 0, 'DefaultFigurePosition', [ scrsz(3)/2 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2 ] ); + +n = 10000; + +% three distributions: +x = randn( n, 1 ); +y = randn( n, 1 ); +z = randn( n, 1 ); +dx = [ 0 8 0 0 ]; +dy = [ 0 0 8 0 ]; +dz = [ 0 0 0 8 ]; +for k = 1:4 + x((k-1)*n/4+1:k*n/4) = x((k-1)*n/4+1:k*n/4) + dx(k); + y((k-1)*n/4+1:k*n/4) = y((k-1)*n/4+1:k*n/4) + dy(k); + z((k-1)*n/4+1:k*n/4) = z((k-1)*n/4+1:k*n/4) + dz(k); +end +f = figure( 1 ); +pca3d( x, y, z ); diff --git a/linearalgebra/simulations/plotvector.m b/linearalgebra/code/plotvector.m similarity index 100% rename from linearalgebra/simulations/plotvector.m rename to linearalgebra/code/plotvector.m diff --git a/linearalgebra/simulations/plotvector3.m b/linearalgebra/code/plotvector3.m similarity index 100% rename from linearalgebra/simulations/plotvector3.m rename to linearalgebra/code/plotvector3.m diff --git a/linearalgebra/code/simplematrix2dtrafos.m b/linearalgebra/code/simplematrix2dtrafos.m new file mode 100644 index 0000000..0b0cfe4 --- /dev/null +++ b/linearalgebra/code/simplematrix2dtrafos.m @@ -0,0 +1,21 @@ +% Visualize some common matrix transformations +% in a 2D coordinate system +% this uses the simplematrixbox() function for visualization +% use the matrix2dtrafos script for the the nicer matrixbox() function. + +disp( 'Click into the plot to advance to the next matrix' ) +simplematrixbox( [ 1 0; 0 1], 'Identity' ); +simplematrixbox( [ 2 0; 0 1], 'Scale x' ); +simplematrixbox( [ 1 0; 0 2], 'Scale y' ); +simplematrixbox( [ 2 0; 0 2], 'Scale x and y' ); +simplematrixbox( [ 0.5 0; 0 0.5], 'Scale x and y' ); +simplematrixbox( [ -1 0; 0 1], 'Flip x' ); +simplematrixbox( [ 1 0; 0 -1], 'Flip y' ); +simplematrixbox( [ -1 0; 0 -1], 'Flip both' ); +simplematrixbox( [ 1 1; 0 1], 'Shear x' ); +simplematrixbox( [ 1 0; 1 1], 'Shear y' ); +% rotation matrices: +for deg = 0:10:360 + phi = deg*pi/180.0; + simplematrixbox( [ cos(phi) -sin(phi); sin(phi) cos(phi)], sprintf( 'Rotate %.0f', deg ) ); +end diff --git a/linearalgebra/code/simplematrixbox.m b/linearalgebra/code/simplematrixbox.m new file mode 100644 index 0000000..bb94254 --- /dev/null +++ b/linearalgebra/code/simplematrixbox.m @@ -0,0 +1,21 @@ +function simplematrixbox( a, s ) +% visualizes the effect of a matrix a on a set of vectors forming a box +% a: a 2x2 matrix +% s: a string plotted as the title of the plot +% this function is called by simplematrix2dtrafos.m +% this is a simple version of the more elaborate matrixbox() function. + + x = [ 0 1 1 0 0 1; 0 0 1 1 0 1 ]; + plot( x(1,:), x(2,:), '-b' ); + hold on; + y = a*x; + plot( y(1,:), y(2,:), '-r' ); + [ ev ed ] = eig( a ); + ev = ev * ed; + quiver( [0 0], [0 0], ev(1,:), ev(2,:), 1.0, 'g' ) + hold off; + xlim( [-2 2 ] ) + ylim( [-2 2] ) + title( s ); + waitforbuttonpress; +end diff --git a/linearalgebra/code/soundmixture.m b/linearalgebra/code/soundmixture.m new file mode 100644 index 0000000..7cef0c8 --- /dev/null +++ b/linearalgebra/code/soundmixture.m @@ -0,0 +1,72 @@ +% read in wav files: +[s1, fs1 ] = audioread( 'PeterUndDerWolf.wav' ); +[s2, fs2 ] = audioread( 'Tielli-Kraulis.wav' ); +[s3, fs3 ] = audioread( 'Chorthippus_biguttulus.wav' ); + +% take out left channel and minimum number of samples: +n = min( [ size( s1, 1 ), size( s2, 1 ), size( s3, 1 ) ] ); +%n = 300000; +x1 = s1(1:n,1)'; +x2 = s2(1:n,1)'; +x3 = s3(1:n,1)'; +clear s1 s2 s3; + +% plot the sound waves: +% dt = 1/fs1; +% time = 0:dt:(length(x1)-1)*dt; +% plot( time, x1 ); +% plot( time, x2 ); +% plot( time, x3 ); + +% play original sounds: +% disp( 'Playing x1 (Peter und der Wolf)' ) +% a = audioplayer( x1, fs1 ); +% playblocking( a ); +% disp( 'Playing x2 (Martin Tielli)' ) +% a = audioplayer( x2, fs2 ); +% playblocking( a ); +% disp( 'Playing x3 (Grasshopper song)' ) +% a = audioplayer( x3, fs3 ); +% playblocking( a ); + +% mix them: +m = [ 1.0 0.3 0.4; 0.1 0.6 0.4; 0.7 0.1 0.7 ]; +y = m*[ x1; x2; x3 ]; + +% add noise: +%y = y + 0.03*randn(size(y)); + +% play mixtures: +% disp( 'Playing mixture y1' ) +% a = audioplayer( y(1,:), fs1 ); +% playblocking( a ); +% disp( 'Playing mixture y2' ) +% a = audioplayer( y(2,:), fs2 ); +% playblocking( a ); +% disp( 'Playing mixture y3' ) +% a = audioplayer( y(3,:), fs3 ); +% playblocking( a ); + +% demix them: +disp( 'Inverse mixing matrix:' ) +dm = inv(m) +dx = dm*y; + +% estimate demixing matrix: +size( y ) +cv = cov( y' ); +[ ev ed ] = eig( cv ); +disp( 'Estimated demixing matrix:' ) +ev + +%play mixtures: +% disp( 'Playing x1 (Peter und der Wolf) recovered from mixtures' ) +% a = audioplayer( dx(1,:), fs1 ); +% playblocking( a ); +% disp( 'Playing x3 (Martin Tielli) recovered from mixtures' ) +% a = audioplayer( dx(2,:), fs2 ); +% playblocking( a ); +% disp( 'Playing x3 (Grasshopper song) recovered from mixtures' ) +% a = audioplayer( dx(3,:), fs3 ); +% playblocking( a ); + diff --git a/linearalgebra/code/spikesortingwave.m b/linearalgebra/code/spikesortingwave.m new file mode 100644 index 0000000..da7c251 --- /dev/null +++ b/linearalgebra/code/spikesortingwave.m @@ -0,0 +1,118 @@ +% load data into time, voltage and spiketimes +load( 'extdata' ); + +% indices into voltage trace of spike times: +dt = time( 2) - time(1); +tinx = round(spiketimes/dt)+1; + +% plot voltage trace with dettected spikes: +figure( 1 ); +clf; +plot( time, voltage, '-b' ) +hold on +scatter( time(tinx), voltage(tinx), 'r', 'filled' ); +xlabel( 'time [ms]' ); +ylabel( 'voltage' ); +hold off + +% spike waveform snippets: +w = ceil( 0.005/dt ); +vs = []; +for k=1:length(tinx) + vs = [ vs; voltage(tinx(k)-w:tinx(k)+w-1) ]; +end +ts = time(1:size(vs,2)); +ts = ts - ts(floor(length(ts)/2)); + +% % plot snippets: +figure( 2 ); +clf; +hold on +for k=1:size(vs,1) + plot( ts, vs(k,:), '-b' ); +end +xlabel( 'time [ms]' ); +ylabel( 'voltage' ); +hold off + +% pca: +cv = cov( vs ); +[ ev , ed ] = eig( cv ); +[d,dinx] = sort( diag(ed), 'descend' ); + +figure( 3 ); +clf; +subplot( 4, 2, 1 ); +imagesc( cv ); +xlabel( 'time bin' ); +ylabel( 'time bin' ); +title( 'covariance matrix' ); +caxis([-0.1 0.1]) + +% spectrum of eigenvalues: +subplot( 4, 2, 2 ); +scatter( 1:length(d), d, 'b', 'filled' ); +xlabel( 'index' ); +ylabel( 'eigenvalue' ); + +% features: +subplot( 4, 2, 5 ); +plot( 1000.0*ts, ev(:,dinx(1)), 'r', 'LineWidth', 2 ); +xlabel( 'time [ms]' ); +ylabel( 'eigenvector 1' ); +subplot( 4, 2, 6 ); +plot( 1000.0*ts, ev(:,dinx(2)), 'g', 'LineWidth', 2 ); +xlabel( 'time [ms]' ); +ylabel( 'eigenvector 2' ); + +% project onto eigenvectors: +nx = vs * ev(:,dinx(1)); +ny = vs * ev(:,dinx(2)); +%scatter( nx, ny, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + +% clustering (two clusters): +%kx = kmeans( [ nx, ny ], 2 ); +% nx smaller or greater a threshold: +kthresh = 1.6; +kx = ones( size( nx ) ); +kx(nx<kthresh) = 2; + +subplot( 4, 1, 2 ); +scatter( nx(kx==1), ny(kx==1), 'r', 'filled', 'MarkerEdgeColor', 'white' ); +hold on; +scatter( nx(kx==2), ny(kx==2), 'g', 'filled', 'MarkerEdgeColor', 'white' ); +hold off; +xlabel( 'projection onto eigenvector 1' ); +ylabel( 'projection onto eigenvector 2' ); + +% show sorted spike waveforms: +subplot( 4, 2, 7 ); +hold on +kinx1 = find(kx==1); +for k=1:length(kinx1) + plot( 1000.0*ts, vs(kinx1(k),:), '-r' ); +end +plot( 1000.0*waveformt, waveform2, '-k', 'LineWidth', 2 ); +xlim( [ 1000.0*ts(1) 1000.0*ts(end) ] ) +xlabel( 'time [ms]' ); +ylabel( 'waveform 1' ); +hold off + +subplot( 4, 2, 8 ); +hold on +kinx2 = find(kx==2); +for k=1:length(kinx2) + plot( 1000.0*ts, vs(kinx2(k),:), '-g' ); +end +plot( 1000.0*waveformt, waveform1, '-k', 'LineWidth', 2 ); +xlim( [ 1000.0*ts(1) 1000.0*ts(end) ] ) +xlabel( 'time [ms]' ); +ylabel( 'waveform 2' ); +hold off + +% spike trains: +figure( 1 ); +hold on; +scatter( time(tinx(kinx1)), voltage(tinx(kinx1)), 100.0, 'r', 'filled' ); +scatter( time(tinx(kinx2)), voltage(tinx(kinx2)), 100.0, 'g', 'filled' ); +hold off; diff --git a/linearalgebra/simulations/spiketime.m b/linearalgebra/code/spiketime.m similarity index 100% rename from linearalgebra/simulations/spiketime.m rename to linearalgebra/code/spiketime.m diff --git a/linearalgebra/code/sta.m b/linearalgebra/code/sta.m new file mode 100644 index 0000000..1741a5a --- /dev/null +++ b/linearalgebra/code/sta.m @@ -0,0 +1,227 @@ +function [ stavg, stavgtime, spikesnippets, stimsnippets, meanrate ] = sta( stimulus, spikes, left, right ) +% computes the spike-triggered average +% stimulus: the stimulus as a nx2 matrix with the first column being time +% in seconds and the second column being the actual stimulus +% spikes: a cell array of vectors of spike times +% left: the time to the left of each spike +% right: the time to the right of each spike +% returns +% stavg: the spike-triggered average +% stavgtime: the corresponding time axis +% spikesnippets: the spike-triggered waveforms as a nspikes x stavgtimes +% matrix +% meanrate: the mean firing rate + + % time indices: + dt = stimulus(2,1) - stimulus(1,1); + wl = round( left/dt ); + wr = round( right/dt ); + nw = wl+wr+1; + + % total number of spikes: + nspikes = 0; + for k = 1:length( spikes ) + nspikes = nspikes + length( spikes{k} ); + end + + % loop over trials: + spikesnippets = zeros( nspikes, nw ); + nspikes = 0; + for k = 1:length( spikes ) + times = spikes{k}; + for j = 1:length(times) + % index of spike in stimulus: + inx = round(times(j)/dt); + if ( inx-wl > 0 ) & ( inx+wr <= size( stimulus, 1 ) ) + nspikes = nspikes + 1; + snip = stimulus( inx-wl:inx+wr, 2 ); + spikesnippets( nspikes, : ) = snip; % - mean(snip); + end + end + end + % delete not used snippets: + spikesnippets(nspikes+1:end,:) = []; + stavgtime = [-left:dt:right]; + meanrate = nspikes/length(spikes)/(stimulus(end,1)-stimulus(1,1)); + + % spike-triggered average: + stavg = mean( spikesnippets, 1 ); + + % loop over stimulus: + nstim = size( stimulus, 1 )-nw+1; + stimsnippets = zeros( nstim, nw ); + stimsnippetstime = zeros( nstim, 1 ); + for j=1:nstim + snip = stimulus( j:j+wr+wl, 2 ); + stimsnippets(j,:) = snip; % - mean(snip); + stimsnippetstime(j) = j*dt; + end + + % projection onto sta: + spikeonsta = spikesnippets * stavg'; + stimonsta = stimsnippets * stavg'; + + % projection onto orthogonal to sta: + orthos = null( stavg ); + mixcoef = rand(size( orthos, 2 ), 1); + mixcoef(length(mixcoef)/10:end) = 0.0; + staortho = orthos*mixcoef; + % stavg*staortho + staortho = staortho/(staortho'*staortho); + spikeonstaortho = spikesnippets * staortho; + stimonstaortho = stimsnippets * staortho; + + % psth binned: + ratetime = 0:dt:stimulus(end,1); +% rate = zeros( size( ratetime ) ); +% for k = 1:length( spikes ) +% [n, ~] = hist( spikes{k}, ratetime ); +% rate = rate + n/dt/length( spikes ); +% end + % kernel psth: + kernelsigma = 0.001; + windowtime = -5.0*kernelsigma:dt:5.0*kernelsigma; + window = normpdf( windowtime, 0.0, kernelsigma )/length(spikes); +% plot( 1000.0*windowtime, window ); + w2 = floor( length( windowtime )/2 ); + kernelrate = zeros( size( ratetime ) ); + for k = 1:length( spikes ) + times = spikes{k}; + for j = 1:length(times) + % index of spike in rate: + inx = round(times(j)/dt); + if ( inx - w2 > 0 ) & ( inx + w2 < length( kernelrate ) ) + kernelrate(inx-w2:inx+w2) = kernelrate(inx-w2:inx+w2) + window; + end + end + end + + if nargout == 0 + % sta plot: + figure( 1 ); + subplot( 3, 2, 1 ) + plot( 1000.0*stavgtime, staortho, '-r', 'LineWidth', 3 ) + hold on; + plot( 1000.0*stavgtime, stavg, '-b', 'LineWidth', 3 ) + hold off; + xlabel( 'time [ms]' ); + ylabel( 'stimulus' ); + title( 'Spike-triggered average' ); + legend( 'ortho', 'STA' ); + + % 2D scatter of projections: + subplot( 3, 2, 2 ) + scatter( stimonsta, stimonstaortho, 40.0, 'b', 'filled', 'MarkerEdgeColor', 'white' ) + hold on; + scatter( spikeonsta, spikeonstaortho, 20.0, 'r', 'filled', 'MarkerEdgeColor', 'white', 'LineWidth', 1.0 ) + hold off; + xlabel( 'projection sta' ); + ylabel( 'projection ortho' ); + title( 'Projections' ); + + % histogram of projections onto sta: + subplot( 3, 2, 3 ) + [ n, projections ] = hist( stimonsta, 50 ); + bw = (projections(2)-projections(1)); + pstim = n / sum(n)/bw; + bar( projections, pstim, 'b' ); + hold on; + [ n, ~ ] = hist( spikeonsta, projections ); + pstimspike = n / sum(n)/bw; + bar( projections, pstimspike, 'r' ); + xlabel( 'projection x' ); + title( 'Projection onto STA' ); + xlim( [projections(1) projections(end)] ); + hold off; + legend( 'p(x)', 'p(x|spikes)' ); + + % nonlinearity for orthogonal projections: + subplot( 3, 2, 5 ) + nonlinearity = meanrate*pstimspike./pstim; + plot( projections(pstim>0.01), nonlinearity(pstim>0.01), '-r', 'LineWidth', 3 ); + xlim( [projections(1) projections(end)] ); + ylim( [0 1000 ]) + xlabel( 'projection x' ); + ylabel( 'meanrate*p(x|spikes)/p(x) [Hz]' ); + title( 'Nonlinearity'); + + % histogram of projections onto orthogonal sta: + subplot( 3, 2, 4 ) + [ n, ~] = hist( stimonstaortho, projections ); + pstimortho = n / sum(n)/bw; + bar( projections, pstimortho, 'b' ); + hold on; + [ n, ~ ] = hist( spikeonstaortho, projections ); + pstimspikeortho = n / sum(n)/bw; + bar( projections, pstimspikeortho, 'r' ); + xlim( [projections(1) projections(end)] ); + xlabel( 'projection x' ); + title( 'Projection onto orthogonal to STA' ); + hold off; + legend( 'p(x)', 'p(x|spikes)' ); + + % nonlinearity for orthogonal projections: + subplot( 3, 2, 6 ) + nonlinearityortho = meanrate*pstimspikeortho./pstimortho; + plot( projections(pstimortho>0.01), nonlinearityortho(pstimortho>0.01), '-r', 'LineWidth', 3 ); + xlim( [projections(1) projections(end)] ); + ylim( [0 1000 ]) + xlabel( 'projection x' ); + ylabel( 'meanrate*p(x|spikes)/p(x) [Hz]' ); + title( 'Nonlinearity'); + end + + % stimulus reconstruction with STA: + stareconstruction = zeros( size( stimulus, 1 ), 1 ); + for k = 1:length( spikes ) + times = spikes{k}; + for j = 1:length(times) + % index of spike in stimulus: + inx = round(times(j)/dt); + if ( inx-wl > 0 ) & ( inx+wr <= size( stimulus, 1 ) ) + stareconstruction( inx-wl:inx+wr ) = stareconstruction( inx-wl:inx+wr ) + stavg'; + end + end + end + stareconstruction = stareconstruction/length(spikes); + + if nargout == 0 + % linear stimulus reconstruction: + figure( 2 ) + ax1 = subplot( 3, 1, 1 ); + plot( 1000.0*stimulus(:,1), stimulus(:,2), 'g', 'LineWidth', 2 ); + hold on; + plot( 1000.0*stimulus(:,1), stareconstruction, 'r', 'LineWidth', 2 ); + ylabel( 'stimulus' ); + hold off; + legend( 'stimulus', 'reconstruction' ); + + % stimulus projection onto sta: + ax2 = subplot( 3, 1, 2 ); + % plot( 1000.0*ratetime, rate, '-b', 'LineWidth', 2 ) + plot( 1000.0*ratetime, kernelrate-mean(kernelrate), '-b', 'LineWidth', 2 ) + hold on; + plot( 1000.0*(stimsnippetstime+left), 2.0*stimonsta*meanrate, 'r', 'LineWidth', 2 ); + ylabel( 'rate [Hz]' ); + hold off; + legend( 'rate', 'stimulus projection on STA' ); + + % sta with nonlinearity: + ax3 = subplot( 3, 1, 3 ); + plot( 1000.0*ratetime, kernelrate, '-b', 'LineWidth', 2 ) + hold on; + xmax = max(projections(pstim>0.01)); + stimonstax = stimonsta; + stimonstax( stimonstax > xmax ) = xmax; + sinx = round((stimonstax-projections(1))/bw); + sinx( sinx < 1 ) = 1; + stastimulus = nonlinearity( sinx ); + plot( 1000.0*(stimsnippetstime+left), stastimulus, 'r', 'LineWidth', 2 ); + legend( 'rate', 'LNP' ); + xlabel( 'time [ms]' ); + ylabel( 'rate [Hz]' ); + hold off; + linkaxes( [ax1 ax2 ax3], 'x' ); + end + +end diff --git a/linearalgebra/code/stastcexample.m b/linearalgebra/code/stastcexample.m new file mode 100644 index 0000000..32500fd --- /dev/null +++ b/linearalgebra/code/stastcexample.m @@ -0,0 +1,31 @@ +clear; +addpath( '../../pointprocesses/simulations/' ); + +set( 0, 'DefaultTextFontSize', 22.0 ); +set( 0, 'DefaultAxesFontSize', 22.0 ); + +% load data +load( 'p-unit_stimulus.mat' ); +load( 'p-unit_spike_times.mat' ); +%load( 'pyramidal_noise_2014-09-02-af_cutoff_50_contr_5.mat' ); +% load( 'pyramidal_noise_2014-09-02-ab_cutoff_300_contr_5.mat' ); +% for k = 1:length( spike_times ) +% spike_times{k} = spike_times{k} * 0.001; +% end +% stimulus = stimulus(1:20000*5,:); + +%dt = stimulus(2,1) - stimulus(1,1); +%spike_times = lifadaptspikes( 20, 50+100.0*stimulus(:,2), dt, 0.1, 0.04, 10.0 ); +%spike_times = lifspikes( 20, 12+30.0*stimulus(:,2), dt, 0.1 ); +%spike_times = lifspikes( 20, 20.0+30.0*stimulus(:,2), dt, 0.0001 ); + +%figure( 1 ); +%clf; +%spikeraster( spike_times ); +%isivec = isis( spike_times ); +%isihist( isivec ); +%isiserialcorr( isivec, 20 ); +%fano( spike_times ); + +sta( stimulus(1:5:length(stimulus),:), spike_times, 0.05, 0.01 ); +%stc( stimulus(1:5:length(stimulus),:), spike_times, 0.05, 0.01 ); diff --git a/linearalgebra/code/stc.m b/linearalgebra/code/stc.m new file mode 100644 index 0000000..c787b78 --- /dev/null +++ b/linearalgebra/code/stc.m @@ -0,0 +1,66 @@ +function stc( stimulus, spikes, left, right ) +% computes the spike-triggered covariance matrix +% stimulus: the stimulus as a nx2 matrix with the first column being time +% in seconds and the second column being the actual stimulus +% spikes: a cell array of vectors of spike times +% left: the time to the left of each spike +% right: the time to the right of each spike + + % time indices: + dt = stimulus(2,1) - stimulus(1,1); + wl = round( left/dt ); + wr = round( right/dt ); + nw = wl+wr+1; + + % spike-triggered average with snippets: + [ stavg, stavgtime, spikesnippets, stimsnippets, meanrate ] = sta( stimulus, spikes, left, right ); + + % spike-triggered covariance matrix: + figure( 3 ); + subplot( 2, 2, 1 ); + spikescv = cov( spikesnippets ); + imagesc( spikescv ); + caxis([-0.1 0.1]) + + % stimulus covariance matrix: + subplot( 2, 2, 2 ); + stimcv = cov( stimsnippets ); + imagesc( stimcv ); + caxis([-0.1 0.1]) + + subplot( 2, 1, 2 ); + imagesc( spikescv-stimcv ); + caxis([-0.01 0.01]) + + % eigenvalues: + %[ ev , ed ] = eig( spikescv-stimcv ); + [ ev , ed ] = eig( spikescv ); + [d,dinx] = sort( diag(ed), 'descend' ); + + % spectrum of eigenvalues: + figure( 4 ); + subplot( 3, 1, 1 ); + scatter( 1:length(d), d, 'b', 'filled' ); +% scatter( 1:length(d), d/sum(abs(d)), 'b', 'filled' ); + xlabel( 'index' ); + ylabel( 'eigenvalue [% variance]' ); + + % features: + subplot( 3, 2, 5 ); + plot( 1000.0*stavgtime, ev(:,dinx(1)), 'g', 'LineWidth', 2 ); + xlabel( 'time [ms]' ); + ylabel( 'eigenvector 1' ); + subplot( 3, 2, 6 ); + plot( 1000.0*stavgtime, ev(:,dinx(2)), 'r', 'LineWidth', 2 ); + xlabel( 'time [ms]' ); + ylabel( 'eigenvector 2' ); + + % project onto eigenvectors: + nx = spikesnippets * ev(:,dinx(1)); + ny = spikesnippets * ev(:,dinx(2)); + subplot( 3, 1, 2 ); + scatter( nx, ny, 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'projection onto eigenvector 1' ); + ylabel( 'projection onto eigenvector 2' ); + +end diff --git a/linearalgebra/exercises/correlations.pdf b/linearalgebra/exercises/correlations.pdf new file mode 100644 index 0000000..4ca95f8 Binary files /dev/null and b/linearalgebra/exercises/correlations.pdf differ diff --git a/linearalgebra/exercises/correlations.tex b/linearalgebra/exercises/correlations.tex new file mode 100644 index 0000000..222e15d --- /dev/null +++ b/linearalgebra/exercises/correlations.tex @@ -0,0 +1,95 @@ +\documentclass[addpoints,10pt]{exam} +\usepackage{url} +\usepackage{color} +\usepackage{hyperref} +\usepackage{graphicx} +\usepackage{amsmath} + +\pagestyle{headandfoot} +\runningheadrule +\firstpageheadrule + +\firstpageheader{Scientific Computing}{Principal Component Analysis}{Oct 29, 2014} +%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014} +\firstpagefooter{}{}{} +\runningfooter{}{}{} +\pointsinmargin +\bracketedpoints + +%\printanswers +\shadedsolutions + +\usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro + +%%%%% 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} + +\sffamily +%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{questions} + \question \textbf{Gaussian distribution} + \begin{parts} + \part Use \texttt{randn} to generate 1000000 normally (zero mean, unit variance) distributed random numbers. + \part Plot a properly normalized histogram of these random numbers. + \part Compare the histogram with the probability density of the Gaussian distribution + \[ p(x) = \frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x-\mu)^2}{2\sigma^2}} \] + where $\mu$ is the mean and $\sigma^2$ is the variance of the Gaussian distribution. + \part Generate Gaussian distributed random numbers with mean $\mu=2$ and + standard deviation $\sigma=\frac{1}{2}$. + \end{parts} + + \question \textbf{Covariance and correlation coefficient} + \begin{parts} + \part Generate two vectors $x$ and $z$ with Gausian distributed random numbers. + \part Compute $y$ as a linear combination of $x$ and $z$ according to + \[ y = r \cdot x + \sqrt{1-r^2}\cdot z \] + where $r$ is a parameter $-1 \le r \le 1$. + What does $r$ do? + \part Plot a scatter plot of $y$ versus $x$ for about 10 different values of $r$. + What do you observe? + \part Also compute the covariance matrix and the correlation + coefficient matrix between $x$ and $y$ (functions \texttt{cov} and + \texttt{corrcoef}). How do these matrices look like for different + values of $r$? How do the values of the matrices change if you generate + $x$ and $z$ with larger variances? + \part Do the same analysis (Scatter plot, covariance, and correlation coefficient) + for \[ y = x^2 + 0.5 \cdot z \] + Are $x$ and $y$ really independent? + \end{parts} + + \question \textbf{Principal component analysis} + \begin{parts} + \part Generate pairs $(x,y)$ of Gaussian distributed random numbers such + that all $x$ values have zero mean, half of the $y$ values have mean $+d$ + and the other half mean $-d$, with $d \ge0$. + \part Plot scatter plots of the pairs $(x,y)$ for $d=0$, 1, 2, 3, 4 and 5. + Also plot a histogram of the $x$ values. + \part Apply PCA on the data and plot a histogram of the data projected onto + the PCA axis with the largest eigenvalue. + What do you observe? + \end{parts} + +\end{questions} + + +\end{document} diff --git a/linearalgebra/exercises/matrices.pdf b/linearalgebra/exercises/matrices.pdf new file mode 100644 index 0000000..3d38055 Binary files /dev/null and b/linearalgebra/exercises/matrices.pdf differ diff --git a/linearalgebra/exercises/matrices.tex b/linearalgebra/exercises/matrices.tex new file mode 100644 index 0000000..4897644 --- /dev/null +++ b/linearalgebra/exercises/matrices.tex @@ -0,0 +1,205 @@ +\documentclass[addpoints,10pt]{exam} +\usepackage{url} +\usepackage{color} +\usepackage{hyperref} +\usepackage{graphicx} +\usepackage{amsmath} + +\pagestyle{headandfoot} +\runningheadrule +\firstpageheadrule + +\firstpageheader{Scientific Computing}{Matrix multiplication}{Oct 28, 2014} +%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014} +\firstpagefooter{}{}{} +\runningfooter{}{}{} +\pointsinmargin +\bracketedpoints + +%\printanswers +\shadedsolutions + +\usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro + +%%%%% 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} + +\sffamily +%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{questions} + \question \textbf{Matrix multiplication} + Calculate the results of the following matrix multiplications and + confirm the result using matlab. + \[ \begin{pmatrix} 2 \\ -4 \\ -1 \end{pmatrix} \cdot + \begin{pmatrix} 3 & -4 & -4 \end{pmatrix} = \] + + \[ \begin{pmatrix} 3 & -3 & -1 \end{pmatrix} \cdot + \begin{pmatrix} 2 \\ 3 \\ 0 \end{pmatrix} = \] + + \[ \begin{pmatrix} 4 & -1 & 2 \\ -1 & 3 & 1 \\ 4 & -2 & 1 \\ 4 & -3 & -2 \end{pmatrix} \cdot + \begin{pmatrix} -2 & -2 & 0 & -3 \\ 3 & -2 & 1 & 0 \\ 1 & -2 & -4 & 0 \end{pmatrix} = \] + + \[ \begin{pmatrix} 3 & 1 \\ 1 & 4 \end{pmatrix} \cdot + \begin{pmatrix} 0 & -3 & 4 & 1 \\ -2 & -1 & -2 & -3 \\ -3 & 1 & -2 & -3 \end{pmatrix} = \] + + \[ \begin{pmatrix} 1 & 1 & -4 \end{pmatrix} \cdot + \begin{pmatrix} -1 \\ 2 \end{pmatrix} = \] + + \[ \begin{pmatrix} 3 & 1 & -2 \\ 2 & 1 & 3 \\ 1 & 1 & 2 \end{pmatrix} \cdot + \begin{pmatrix} 2 & 2 \\ -3 & 3 \\ -4 & 1 \end{pmatrix} = \] + + \[ \begin{pmatrix} 3 \\ 2 \end{pmatrix} \cdot + \begin{pmatrix} -3 & 2 & -4 & 1 \end{pmatrix} = \] + + \[ \begin{pmatrix} -1 \\ -4 \\ -1 \end{pmatrix} \cdot + \begin{pmatrix} 0 & -4 & 1 \end{pmatrix} = \] + + \[ \begin{pmatrix} 4 & -2 & -2 & -4 \end{pmatrix} \cdot + \begin{pmatrix} 2 \\ 2 \\ 1 \\ -1 \end{pmatrix} = \] + + \[ \begin{pmatrix} -2 & -3 & -4 \\ 1 & 3 & 2 \\ -4 & -2 & 1 \end{pmatrix} \cdot + \begin{pmatrix} 1 & 2 & -2 & 4 \\ 3 & -1 & 1 & -1 \\ -3 & 2 & -1 & 2 \end{pmatrix} = \] + + \[ \begin{pmatrix} 2 & -4 & 4 & 4 \\ -3 & 3 & 2 & 1 \end{pmatrix} \cdot + \begin{pmatrix} 0 & 3 & 4 & -2 \\ -4 & -2 & -1 & 0 \\ 1 & 2 & -4 & -4 \\ 3 & 2 & -2 & -4 \end{pmatrix} = \] + + \[ \begin{pmatrix} 3 & 1 & -2 & -2 \end{pmatrix} \cdot + \begin{pmatrix} -4 \\ 3 \\ -2 \\ 4 \end{pmatrix} = \] + + \[ \begin{pmatrix} -1 & 3 & 4 \end{pmatrix} \cdot + \begin{pmatrix} -1 \\ 4 \\ -3 \end{pmatrix} = \] + + \[ \begin{pmatrix} 1 & -4 & 3 & 3 \end{pmatrix} \cdot + \begin{pmatrix} 1 \\ 0 \\ -4 \\ -1 \end{pmatrix} = \] + + \[ \begin{pmatrix} -4 & -4 & -3 \\ -2 & -2 & 4 \\ -3 & 4 & -3 \end{pmatrix} \cdot + \begin{pmatrix} 0 & 3 & -4 & 4 \\ -1 & -2 & -3 & 1 \\ 1 & -2 & 2 & 0 \end{pmatrix} = \] + + \[ \begin{pmatrix} -3 & 0 & 4 & 1 \\ 0 & 1 & 1 & 4 \end{pmatrix} \cdot + \begin{pmatrix} -4 & 3 & 1 & 4 \\ 1 & -4 & 1 & -3 \\ -4 & 0 & -4 & -4 \\ 1 & -2 & 4 & 4 \end{pmatrix} = \] + + \[ \begin{pmatrix} 4 \\ 3 \\ 4 \\ -2 \end{pmatrix} \cdot + \begin{pmatrix} 2 & 4 & 3 & 3 \end{pmatrix} = \] + + \[ \begin{pmatrix} 1 & 2 & 0 & 3 \end{pmatrix} \cdot + \begin{pmatrix} -3 \\ 1 \\ 1 \end{pmatrix} = \] + + \[ \begin{pmatrix} -4 & 0 & -1 & 3 \\ 0 & -4 & 3 & -3 \end{pmatrix} \cdot + \begin{pmatrix} -1 & -4 & -1 \\ 3 & 2 & 0 \\ -2 & 3 & -2 \\ 1 & 2 & -2 \end{pmatrix} = \] + + \[ \begin{pmatrix} 2 & 0 & 3 \\ 1 & -4 & -1 \\ 3 & 0 & -2 \end{pmatrix} \cdot + \begin{pmatrix} 0 & 2 & -1 & -2 \\ -1 & -1 & -3 & 4 \\ 2 & 4 & -4 & 1 \end{pmatrix} = \] + \[ \begin{pmatrix} -1 & 4 \end{pmatrix} \cdot + \begin{pmatrix} 0 \\ 1 \end{pmatrix} = \] + + \[ \begin{pmatrix} -4 & 3 \\ -4 & 0 \\ -2 & -2 \end{pmatrix} \cdot + \begin{pmatrix} 0 & 1 & -4 & 2 \\ 2 & 3 & -2 & -1 \end{pmatrix} = \] + + \[ \begin{pmatrix} -2 & -1 \end{pmatrix} \cdot + \begin{pmatrix} 1 \\ -2 \end{pmatrix} = \] + + \[ \begin{pmatrix} -2 & 2 & -2 & -3 \\ 2 & -4 & -2 & 2 \\ 0 & 2 & -2 & -2 \\ 1 & -2 & -2 & -2 \end{pmatrix} \cdot + \begin{pmatrix} 1 & -2 & 2 \\ -4 & -2 & -2 \\ 3 & 1 & 4 \\ -4 & 1 & -2 \end{pmatrix} = \] + + \[ \begin{pmatrix} -1 & -3 & 0 & -1 \\ 4 & -2 & 1 & 2 \end{pmatrix} \cdot + \begin{pmatrix} -3 & -4 \\ -4 & 0 \end{pmatrix} = \] + + \[ \begin{pmatrix} -1 & 1 & -2 \\ -2 & 2 & -4 \\ 1 & -2 & -2 \end{pmatrix} \cdot + \begin{pmatrix} -1 & 2 & -4 \\ 1 & 3 & 0 \\ 1 & 4 & -4 \end{pmatrix} = \] + + \[ \begin{pmatrix} -3 & 3 \\ -3 & 2 \end{pmatrix} \cdot + \begin{pmatrix} 2 & -3 \\ -2 & -4 \end{pmatrix} = \] + + \[ \begin{pmatrix} 1 & 1 & -3 \end{pmatrix} \cdot + \begin{pmatrix} -1 \\ -2 \\ 3 \end{pmatrix} = \] + + \[ \begin{pmatrix} -4 & 2 & 1 \\ 4 & 0 & -2 \\ 2 & 3 & -3 \\ -2 & -2 & -2 \end{pmatrix} \cdot + \begin{pmatrix} -1 & 2 & 0 & -2 \\ 2 & -2 & 0 & -1 \\ -4 & 3 & -3 & 4 \end{pmatrix} = \] + + \[ \begin{pmatrix} -2 & -4 & 2 & 4 \\ 3 & -3 & 2 & 1 \end{pmatrix} \cdot + \begin{pmatrix} 0 & 4 & -1 & -4 \\ 2 & 3 & -4 & -1 \\ 3 & 2 & -2 & 4 \end{pmatrix} = \] + + \[ \begin{pmatrix} -3 & -2 & -1 & -3 \end{pmatrix} \cdot + \begin{pmatrix} 2 \\ -2 \\ 3 \\ -2 \end{pmatrix} = \] + + \[ \begin{pmatrix} 4 & 4 & 2 & 3 \end{pmatrix} \cdot + \begin{pmatrix} 3 \\ 3 \\ -2 \\ 1 \end{pmatrix} = \] + + \[ \begin{pmatrix} 3 & 2 & -2 \end{pmatrix} \cdot + \begin{pmatrix} 2 \\ 4 \\ 3 \end{pmatrix} = \] + + \[ \begin{pmatrix} 2 & -1 & 0 & -2 \\ 0 & -4 & -3 & -1 \end{pmatrix} \cdot + \begin{pmatrix} 4 & -3 & 2 & 4 \\ -3 & -4 & 1 & 1 \\ 1 & 3 & -2 & 3 \\ -1 & -2 & 3 & 0 \end{pmatrix} = \] + + \[ \begin{pmatrix} -3 & -3 & 3 & 2 \\ 2 & 2 & -3 & 1 \end{pmatrix} \cdot + \begin{pmatrix} 0 & 1 \\ 4 & 2 \\ -3 & -1 \\ -3 & 4 \end{pmatrix} = \] + + \[ \begin{pmatrix} -4 & -3 \end{pmatrix} \cdot + \begin{pmatrix} -2 \\ 3 \\ 4 \end{pmatrix} = \] + + \[ \begin{pmatrix} 4 & 4 \end{pmatrix} \cdot + \begin{pmatrix} 1 \\ 4 \\ -1 \end{pmatrix} = \] + + \[ \begin{pmatrix} 1 & -2 & 3 \end{pmatrix} \cdot + \begin{pmatrix} 3 \\ 1 \\ 2 \end{pmatrix} = \] + + \[ \begin{pmatrix} -3 & 2 \end{pmatrix} \cdot + \begin{pmatrix} -1 \\ 1 \end{pmatrix} = \] + + \[ \begin{pmatrix} -2 & -4 & -4 & 0 \\ 0 & 3 & 4 & -4 \\ 4 & 2 & -2 & -4 \\ 0 & 0 & 4 & -1 \end{pmatrix} \cdot + \begin{pmatrix} 0 & -1 \\ -1 & 1 \\ -4 & -3 \\ 2 & 1 \end{pmatrix} = \] + + \[ \begin{pmatrix} -3 \\ 3 \\ -3 \\ -4 \end{pmatrix} \cdot + \begin{pmatrix} 2 & 4 & -2 & 1 \end{pmatrix} = \] + + \[ \begin{pmatrix} 2 \\ 0 \end{pmatrix} \cdot + \begin{pmatrix} -1 & -3 & -2 & 2 \end{pmatrix} = \] + + \[ \begin{pmatrix} 0 & -4 & -4 & 4 \end{pmatrix} \cdot + \begin{pmatrix} 1 \\ 4 \\ 0 \\ 4 \end{pmatrix} = \] + + \[ \begin{pmatrix} -3 & -1 \\ -3 & -1 \end{pmatrix} \cdot + \begin{pmatrix} 0 & -3 & 3 & -2 \\ -4 & 1 & -1 & 4 \end{pmatrix} = \] + + \[ \begin{pmatrix} 4 & 0 \\ -1 & 4 \\ 1 & -3 \end{pmatrix} \cdot + \begin{pmatrix} -4 & -4 \\ -4 & 2 \end{pmatrix} = \] + + \[ \begin{pmatrix} -1 \\ 3 \\ 2 \\ 4 \end{pmatrix} \cdot + \begin{pmatrix} 0 & -1 & 0 & 0 \end{pmatrix} = \] + + \[ \begin{pmatrix} 3 \\ -2 \\ 2 \\ 3 \end{pmatrix} \cdot + \begin{pmatrix} -2 & -3 & -4 & 2 \end{pmatrix} = \] + + \[ \begin{pmatrix} 2 & -2 & -4 & 4 \\ 0 & 1 & -3 & -2 \\ -1 & 3 & 0 & -2 \end{pmatrix} \cdot + \begin{pmatrix} -4 & 1 \\ -4 & 3 \end{pmatrix} = \] + + \[ \begin{pmatrix} -4 & -1 & 3 \end{pmatrix} \cdot + \begin{pmatrix} -4 \\ -3 \\ 3 \end{pmatrix} = \] + + \question \textbf{Automatic generation of exercises} + Write some matlab code that generates exercises like this one automatically! :-) + +\end{questions} + + +\end{document} diff --git a/linearalgebra/resources/Pillow2007-STC-LNPmodel.pdf b/linearalgebra/resources/Pillow2007-STC-LNPmodel.pdf new file mode 100644 index 0000000..da7133a Binary files /dev/null and b/linearalgebra/resources/Pillow2007-STC-LNPmodel.pdf differ diff --git a/linearalgebra/simulations/covareigen3examples.m b/linearalgebra/simulations/covareigen3examples.m deleted file mode 100644 index 3d16628..0000000 --- a/linearalgebra/simulations/covareigen3examples.m +++ /dev/null @@ -1,14 +0,0 @@ -n = 10000; - -% three distributions: -x = randn( n, 1 ); -y = randn( n, 1 ); -z = randn( n, 1 ); -f = figure( 'Position', [ scrsz(3)/2 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2 ]); -d = [ 0 4 -4 8 ]; -for k = 1:4 - x((k-1)*n/4+1:k*n/4) = x((k-1)*n/4+1:k*n/4) + d(k); - y((k-1)*n/4+1:k*n/4) = y((k-1)*n/4+1:k*n/4) - d(k); - z((k-1)*n/4+1:k*n/4) = z((k-1)*n/4+1:k*n/4) + d(k); -end -covareigen3( x, y, z ); diff --git a/linearalgebra/simulations/matrix2dtrafos.m b/linearalgebra/simulations/matrix2dtrafos.m deleted file mode 100644 index da6840e..0000000 --- a/linearalgebra/simulations/matrix2dtrafos.m +++ /dev/null @@ -1,74 +0,0 @@ -m = [ 1 0; 0 1]; -matrixbox( m ); -title( 'Identity' ); -waitforbuttonpress; - -m = [ 2 0; 0 1]; -matrixbox( m ); -title( 'Scale x' ); -waitforbuttonpress; - -m = [ 1 0; 0 2]; -matrixbox( m ); -title( 'Scale y' ); -waitforbuttonpress; - -m = [ 2 0; 0 2]; -matrixbox( m ); -title( 'Scale both' ); -waitforbuttonpress; - -m = [ -1 0; 0 1]; -matrixbox( m ); -title( 'Flip x' ); -waitforbuttonpress; - -m = [ 1 0; 0 -1]; -matrixbox( m ); -title( 'Flip y' ); -waitforbuttonpress; - -m = [ -1 0; 0 -1]; -matrixbox( m ); -title( 'Flip both' ); -waitforbuttonpress; - -m = [ 1 0; 1 1]; -matrixbox( m ); -title( 'Shear x' ); -waitforbuttonpress; - -m = [ 1 1; 0 1]; -matrixbox( m ); -title( 'Shear y' ); -waitforbuttonpress; - -phi = 0.1667*pi; -m = [ cos(phi) -sin(phi); sin(phi) cos(phi)]; -matrixbox( m ); -title( 'Rotate 30' ); -waitforbuttonpress; - -phi = 0.333*pi; -m = [ cos(phi) -sin(phi); sin(phi) cos(phi)]; -matrixbox( m ); -title( 'Rotate 60' ); -waitforbuttonpress; - -phi = 0.5*pi; -m = [ cos(phi) -sin(phi); sin(phi) cos(phi)]; -matrixbox( m ); -title( 'Rotate 90' ); -waitforbuttonpress; - -phi = 0.75*pi; -m = [ cos(phi) -sin(phi); sin(phi) cos(phi)]; -matrixbox( m ); -title( 'Rotate 135' ); -waitforbuttonpress; - -phi = 1.0*pi; -m = [ cos(phi) -sin(phi); sin(phi) cos(phi)]; -matrixbox( m ); -title( 'Rotate 180' ); -waitforbuttonpress; diff --git a/linearalgebra/simulations/matrixbox.m b/linearalgebra/simulations/matrixbox.m deleted file mode 100644 index 5abbfa0..0000000 --- a/linearalgebra/simulations/matrixbox.m +++ /dev/null @@ -1,24 +0,0 @@ -function matrixbox( m ) -% visualizes the effect of a matrix m on a set of vectors forming a box -% m: a 2x2 matrix - - v = [ 0 1 1 0 0; 0 0 1 1 0]; - w = m*v; - clf; - hold on; - %set(gca, 'Xtick', [], 'Ytick', [], 'box', 'off') - % axis: - plot( [-2 2], [0 0], 'k', 'LineWidth', 1 ); - plot( [0 0], [-2 2], 'k', 'LineWidth', 1 ); - % old box: - plot( v(1,:), v(2,:), 'k', 'LineWidth', 1.0 ) - quiver( [v(1,1)], [v(2,1)], [v(1,3)], [v(2,3)], 1.0, 'k', 'LineWidth', 2.0 ); - scatter( [v(1,2)], [v(2,2)], 60.0, 'filled', 'k' ); - % transfomred box: - plot( w(1,:), w(2,:), 'b', 'LineWidth', 2.0 ) - quiver( [w(1,1)], [w(2,1)], [w(1,3)], [w(2,3)], 1.0, 'b', 'LineWidth', 3.0 ); - scatter( [w(1,2)], [w(2,2)], 100.0, 'filled', 'b' ); - hold off; - xlim( [ -2 2 ] ); - ylim( [ -2 2 ] ); -end diff --git a/linearalgebra/simulations/spikesortingwave.m b/linearalgebra/simulations/spikesortingwave.m deleted file mode 100644 index 369915e..0000000 --- a/linearalgebra/simulations/spikesortingwave.m +++ /dev/null @@ -1,127 +0,0 @@ -% generate spikes: -n = 1000; -misi = 0.01; -isis = exprnd( misi, n, 1 ); -isis = isis + 0.01; -spikes = cumsum( isis ); -p = rand( size( spikes ) ); - -% spike waveforms: -dt = 0.0001; -x = -0.01:dt:0.01; -y1 = 2.0*exp( -(x-0.0003).^2/2.0/0.0005^2 ) - 1.4*exp( -(x-0.0005).^2/2.0/0.0005^2 ); -y2 = exp( -x.^2/2.0/0.002^2 ).*cos(2.0*pi*x/0.005); -p12 = 0.5; - -% voltage trace: -noise = 0.2; -t = 0:dt:spikes(end)+3.0*x(end); -v = noise*randn( 1, length( t ) ); -for k = 1:length( spikes ) - inx = ceil( spikes(k)/dt ); - if p(k) < p12 - v(inx:inx+length(x)-1) = v(inx:inx+length(x)-1) + y1; - else - v(inx:inx+length(x)-1) = v(inx:inx+length(x)-1) + y2; - end -end - -figure( 1 ); -clf; -plot( t(t<1.0), v(t<1.0) ); -hold on; - -% find peaks: -thresh = 0.7; -inx = find( v(2:end-1) > thresh & v(1:end-2)<v(2:end-1) & v(2:end-1) > v(3:end) ) + 1; -spiket = t(inx); -spikev = v(inx); -tinx = inx; -for k=1:2 - inx = find( ( spiket(2:end-1)-spiket(1:end-2)>0.005 | spikev(2:end-1) > spikev(1:end-2) ) & ( spiket(3:end)-spiket(2:end-1)>0.005 | spikev(2:end-1) > spikev(3:end) ) )+1; - spiket = spiket(inx); - spikev = spikev(inx); - tinx = tinx(inx); -end -scatter( spiket(spiket<1.0), spikev(spiket<1.0), 100.0, 'r', 'filled' ); -%scatter( t(tinx), v(tinx), 100.0, 'r', 'filled' ); -hold off; - -% spike waveform snippets: -w = ceil( 0.005/dt ); -vs = []; -for k=1:length(tinx) - vs = [ vs; v(tinx(k)-w:tinx(k)+w-1) ]; -end -ts = t(1:size(vs,2)); -ts = ts - ts(floor(length(ts)/2)); -figure( 2 ); -clf; -hold on -for k=1:size(vs,1) - plot( ts, vs(k,:), '-b' ); -end -hold off - -% pca: -cv = cov( vs ); -[ ev , ed ] = eig( cv ); -[d,dinx] = sort( diag(ed), 'descend' ); -% spectrum of eigenvalues: -figure( 3 ); -clf; -subplot( 4, 1, 1 ); -scatter( 1:length(d), d, 'b', 'filled' ); -% project onto eigenvectors: -nx = vs * ev(:,dinx(1)); -ny = vs * ev(:,dinx(2)); -%scatter( nx, ny, 'b', 'filled', 'MarkerEdgeColor', 'white' ); -%hold on; - -% features: -subplot( 4, 2, 5 ); -plot( 1000.0*ts, ev(:,dinx(1)), 'g', 'LineWidth', 2 ); -subplot( 4, 2, 6 ); -plot( 1000.0*ts, ev(:,dinx(2)), 'r', 'LineWidth', 2 ); - -% clustering: -%kx = kmeans( [ nx, ny ], 2 ); -% nx smaller or greater a threshold: -kthresh = 1.6; -kx = ones( size( vs, 1 ), 1 ); -kx(nx>kthresh) = 2; - -subplot( 4, 1, 2 ); -scatter( nx(kx==1), ny(kx==1), 'g', 'filled', 'MarkerEdgeColor', 'white' ); -hold on; -scatter( nx(kx==2), ny(kx==2), 'r', 'filled', 'MarkerEdgeColor', 'white' ); -hold off; - -% show sorted spike waveforms: -subplot( 4, 2, 7 ); -hold on -kinx1 = find(kx==1); -for k=1:length(kinx1) - plot( 1000.0*ts, vs(kinx1(k),:), '-g' ); -end -plot( 1000.0*x, y1, '-k', 'LineWidth', 2 ); -xlim( [ 1000.0*ts(1) 1000.0*ts(end) ] ) -hold off -subplot( 4, 2, 8 ); -hold on -kinx2 = find(kx==2); -for k=1:length(kinx2) - plot( 1000.0*ts, vs(kinx2(k),:), '-r' ); -end -plot( 1000.0*x, y2, '-k', 'LineWidth', 2 ); -xlim( [ 1000.0*ts(1) 1000.0*ts(end) ] ) -hold off - -% spike trains: -figure( 1 ); -hold on; -six1 = find( spiket(kinx1)<1.0 ); -scatter( spiket(kinx1(six1)), spikev(kinx1(six1)), 100.0, 'g', 'filled' ); -six2 = find( spiket(kinx2)<1.0 ); -scatter( spiket(kinx2(six2)), spikev(kinx2(six2)), 100.0, 'r', 'filled' ); -hold off; diff --git "a/moduledescription/Einf\303\274hrung_wissenschaftl_Datenverarbeitung.pdf" "b/moduledescription/Einf\303\274hrung_wissenschaftl_Datenverarbeitung.pdf" new file mode 100644 index 0000000..bcf33f1 Binary files /dev/null and "b/moduledescription/Einf\303\274hrung_wissenschaftl_Datenverarbeitung.pdf" differ diff --git "a/moduledescription/Einf\303\274hrung_wissenschaftl_Datenverarbeitung.pptx" "b/moduledescription/Einf\303\274hrung_wissenschaftl_Datenverarbeitung.pptx" new file mode 100644 index 0000000..2f26cfe Binary files /dev/null and "b/moduledescription/Einf\303\274hrung_wissenschaftl_Datenverarbeitung.pptx" differ diff --git a/moduledescription/Hiwis.odt b/moduledescription/Hiwis.odt new file mode 100644 index 0000000..5ea694b Binary files /dev/null and b/moduledescription/Hiwis.odt differ diff --git a/moduledescription/Hiwis.pdf b/moduledescription/Hiwis.pdf new file mode 100644 index 0000000..8e86a7a Binary files /dev/null and b/moduledescription/Hiwis.pdf differ diff --git a/moduledescription/ModuleScientificComputing.doc b/moduledescription/ModuleScientificComputing.doc new file mode 100644 index 0000000..5d85b1e Binary files /dev/null and b/moduledescription/ModuleScientificComputing.doc differ diff --git a/moduledescription/ModuleScientificComputing.odt b/moduledescription/ModuleScientificComputing.odt new file mode 100644 index 0000000..958b818 Binary files /dev/null and b/moduledescription/ModuleScientificComputing.odt differ diff --git a/pointprocesses/code/colorednoisepdf.m b/pointprocesses/code/colorednoisepdf.m new file mode 100644 index 0000000..28f421b --- /dev/null +++ b/pointprocesses/code/colorednoisepdf.m @@ -0,0 +1,10 @@ +function pcn = colorednoisepdf( x, misi, epsilon, tau ) +% returns the ISI pdf for PIF with colored noise drive +% x: the input ISI +% misis: the mean isi +% epsilon: a parameter +% tau: the correlation time of the noise + gamma1 = x/tau+exp(-x/tau)-1.0; + gamma2 = 1.0-exp(-x/tau); + pcn=exp(-(x-misi).^2./(4.0*epsilon*tau.^2.*gamma1)).*(((misi-x).*gamma2+2*gamma1*tau).^2./(2*gamma1*tau^2)-epsilon*(gamma2.^2-2*gamma1.*exp(-x/tau))) ./ (2*tau*sqrt(4*pi*epsilon*gamma1.^3)); +end diff --git a/pointprocesses/code/colorednoisepdfisifit.m b/pointprocesses/code/colorednoisepdfisifit.m new file mode 100644 index 0000000..1c653c0 --- /dev/null +++ b/pointprocesses/code/colorednoisepdfisifit.m @@ -0,0 +1,24 @@ +% misi = 0.02; +% epsilon = 1.0; +% tau = 0.1; +x=0:0.002:0.1; +% pcn = colorednoisepdf( x, misi, epsilon, tau )+10.0*randn( size( x ) ); +% plot( x, pcn ); + +spikes = lifouspikes( 10, 15, 50.0, 1.0, 1.0 ); +isivec = isis( spikes ); +misi = mean( isivec ); +1.0/misi +isibins = 0:0.0005:0.1; +[ n, c ] = hist( isivec, isibins ); +n = n / sum(n)/(isibins(2)-isibins(1)); +bar( c, n ); + +beta0 = [ 1.0, 0.01 ]; +b = nlinfit(c(1:end-2), n(1:end-2), @(b,x)(colorednoisepdf(x, misi, b(1), b(2))), beta0) + +pcn = colorednoisepdf( x, misi, b(1), b(2) ); +hold on +plot( x, pcn, 'r', 'LineWidth', 3 ); +hold off + diff --git a/pointprocesses/code/counthist.m b/pointprocesses/code/counthist.m new file mode 100644 index 0000000..d64fb23 --- /dev/null +++ b/pointprocesses/code/counthist.m @@ -0,0 +1,38 @@ +function [ counts, bins ] = counthist( spikes, w ) +% computes count histogram and compare them with Poisson distribution +% spikes: a cell array of vectors of spike times +% w: observation window duration for computing the counts + + % collect spike counts: + tmax = spikes{1}(end); + n = []; + r = []; + for k = 1:length(spikes) + for tk = 0:w:tmax-w + nn = sum( ( spikes{k} >= tk ) & ( spikes{k} < tk+w ) ); + %nn = length( find( ( spikes{k} >= tk ) & ( spikes{k} < tk+w ) ) ); + n = [ n nn ]; + end + rate = (length(spikes{k})-1)/(spikes{k}(end) - spikes{k}(1)); + r = [ r rate ]; + end + % histogram of spike counts: + maxn = max( n ); + [counts, bins ] = hist( n, 0:1:maxn+1 ); + counts = counts / sum( counts ); + if nargout == 0 + bar( bins, counts ); + hold on; + % Poisson distribution: + rate = mean( r ); + x = 0:1:20; + l = rate*w; + y = l.^x.*exp(-l)./factorial(x); + plot( x, y, 'r', 'LineWidth', 3 ); + xlim( [ 0 20 ] ); + hold off; + xlabel( 'counts k' ); + ylabel( 'P(k)' ); + end +end + diff --git a/pointprocesses/code/fano.m b/pointprocesses/code/fano.m new file mode 100644 index 0000000..a73cada --- /dev/null +++ b/pointprocesses/code/fano.m @@ -0,0 +1,39 @@ +function fano( spikes ) +% computes fano factor as a function of window size +% spikes: a cell array of vectors of spike times + + tmax = spikes{1}(end); + windows = 0.01:0.05:0.01*tmax; + mc = windows; + vc = windows; + ff = windows; + fs = windows; + for j = 1:length(windows) + w = windows( j ); + % collect counts: + n = []; + for k = 1:length(spikes) + for tk = 0:w:tmax-w + nn = sum( ( spikes{k} >= tk ) & ( spikes{k} < tk+w ) ); + %nn = length( find( ( spikes{k} >= tk ) & ( spikes{k} < tk+w ) ) ); + n = [ n nn ]; + end + end + % statistics for current window: + mc(j) = mean( n ); + vc(j) = var( n ); + ff(j) = vc( j )/mc( j ); + fs(j) = sqrt(vc( j )/mc( j )); + end + + subplot( 1, 2, 1 ); + scatter( mc, vc, 'filled' ); + xlabel( 'Mean count' ); + ylabel( 'Count variance' ); + + subplot( 1, 2, 2 ); + scatter( 1000.0*windows, fs, 'filled' ); + xlabel( 'Window W [ms]' ); + ylabel( 'Fano factor' ); +end + diff --git a/pointprocesses/code/inversegauss.m b/pointprocesses/code/inversegauss.m new file mode 100644 index 0000000..58a9512 --- /dev/null +++ b/pointprocesses/code/inversegauss.m @@ -0,0 +1,5 @@ +function y = inversegauss( x, m, d ) +% returns the inverse Gauss density with mean isi m and diffusion +% coefficent d + y = exp(-(x-m).^2./(4.0*d.*x.*m.^2.0))./sqrt(4.0*pi*d.*x.^3.0); +end diff --git a/pointprocesses/code/inversegaussplot.m b/pointprocesses/code/inversegaussplot.m new file mode 100644 index 0000000..c43e6d2 --- /dev/null +++ b/pointprocesses/code/inversegaussplot.m @@ -0,0 +1,28 @@ +f = figure; +subplot( 1, 2, 1 ); +dx=0.0001; +x = dx:dx:0.5; +hold all +m = 0.02; +for d = [ 0.1 1 10 50 200 ] + plot( 1000.0*x, inversegauss( x, m, d ), 'LineWidth', 3, 'DisplayName', sprintf( 'D=%.1f', d ) ); +end +title( sprintf( 'm=%g ms', 1000.0*m ) ) +xlim( [ 0 50 ] ); +xlabel( 'ISI [ms]' ); +ylabel( 'p(ISI)' ); +legend( '-DynamicLegend' ); +hold off; + +subplot( 1, 2, 2 ); +hold all; +d = 5.0; +for m = [ 0.005 0.01 0.02 0.05 ] + plot( 1000.0*x, inversegauss( x, m, d ), 'LineWidth', 3, 'DisplayName', sprintf( 'm=%g ms', 1000.0*m ) ); +end +title( sprintf( 'D=%g Hz', d ) ) +xlim( [ 0 50 ] ) +xlabel( 'ISI [ms]' ); +ylabel( 'p(ISI)' ); +legend( '-DynamicLegend' ) +hold off diff --git a/pointprocesses/code/isihist.m b/pointprocesses/code/isihist.m new file mode 100644 index 0000000..a9722fd --- /dev/null +++ b/pointprocesses/code/isihist.m @@ -0,0 +1,32 @@ +function isihist( isis, binwidth ) +% plot histogram of isis +% isis: vector of interspike intervals +% binwidth: optional width to be used for the isi bins + + if nargin < 2 + nperbin = 200; % average number of data points per bin + bins = length( isis )/nperbin; % number of bins + binwidth = max( isis )/bins; + if binwidth < 5e-4 % half a millisecond + binwidth = 5e-4; + end + end + bins = 0.5*binwidth:binwidth:max(isis); + % histogram: + [ nelements, centers ] = hist( isis, bins ); + % normalization (integral = 1): + nelements = nelements / sum( nelements ) / binwidth; + % plot: + bar( 1000.0*centers, nelements ); + xlabel( 'ISI [ms]' ) + ylabel( 'p(ISI) [1/s]') + % annotation: + misi = mean( isis ); + sdisi = std( isis ); + disi = sdisi^2.0/2.0/misi^3; + text( 0.5, 0.6, sprintf( 'mean=%.1f ms', 1000.0*misi ), 'Units', 'normalized' ) + text( 0.5, 0.5, sprintf( 'std=%.1f ms', 1000.0*sdisi ), 'Units', 'normalized' ) + text( 0.5, 0.4, sprintf( 'CV=%.2f', sdisi/misi ), 'Units', 'normalized' ) + %text( 0.5, 0.3, sprintf( 'D=%.1f Hz', disi ), 'Units', 'normalized' ) +end + diff --git a/pointprocesses/code/isireturnmap.m b/pointprocesses/code/isireturnmap.m new file mode 100644 index 0000000..d790e13 --- /dev/null +++ b/pointprocesses/code/isireturnmap.m @@ -0,0 +1,24 @@ +function isireturnmap( isis, lag2 ) +% plot return maps for lag 1 and lag lag2 + + clf; + subplot( 1, 2, 1 ); + lag = 1; + scatter( 1000.0*isis(1:end-lag)', 1000.0*isis(1+lag:end)', 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'ISI T_i [ms]' ); + ylabel( 'ISI T_{i+1} [ms]' ); + maxisi = max( isis ); + maxy = ceil(maxisi/10)*10.0; + xlim( [0 1.5*maxy ]) + ylim( [0 maxy ]) + + subplot( 1, 2, 2 ); + lag = lag2; + scatter( 1000.0*isis(1:end-lag)', 1000.0*isis(1+lag:end)', 'b', 'filled', 'MarkerEdgeColor', 'white' ); + xlabel( 'ISI T_i [ms]' ); + ylabel( 'ISI T_{i+2} [ms]' ); + xlim( [0 1.5*maxy ]) + ylim( [0 maxy ]) + +end + diff --git a/pointprocesses/code/isis.m b/pointprocesses/code/isis.m new file mode 100644 index 0000000..b0b95ff --- /dev/null +++ b/pointprocesses/code/isis.m @@ -0,0 +1,15 @@ +function isivec = isis( spikes ) +% returns a single list of isis computed from all trials in spikes +% spikes: a cell array of vectors of spike times + + isivec = []; + for k = 1:length(spikes) + difftimes = diff( spikes{k} ); + if ( size( difftimes, 1 ) == 1 ) + isivec = [ isivec difftimes ]; + elseif ( size( difftimes, 2 ) == 1 ) + isivec = [ isivec difftimes' ]; + end + end +end + diff --git a/pointprocesses/code/isiserialcorr.m b/pointprocesses/code/isiserialcorr.m new file mode 100644 index 0000000..d5b44c1 --- /dev/null +++ b/pointprocesses/code/isiserialcorr.m @@ -0,0 +1,26 @@ +function isicorr = isiserialcorr( isis, maxlag ) +% serial correlation of isis +% isis: vector of interspike intervals +% maxlag: the maximum lag + + lags = 0:maxlag; + isicorr = zeros( size( lags ) ); + for k = 1:length(lags) + lag = lags(k); + if length( isis ) > lag+10 + cc = corrcoef( [ isis(1:end-lag)', isis(1+lag:end)' ] ); + isicorr(k) = cc( 1, 2 ); + end + end + + if nargout == 0 + % plot: + plot( lags, isicorr, '-b' ); + hold on; + scatter( lags, isicorr, 100.0, 'b', 'filled' ); + hold off; + xlabel( 'Lag k' ) + ylabel( '\rho_k') + end +end + diff --git a/pointprocesses/code/lifadaptspikes.m b/pointprocesses/code/lifadaptspikes.m new file mode 100644 index 0000000..2ef1874 --- /dev/null +++ b/pointprocesses/code/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/pointprocesses/code/lifboltzmanspikes.m b/pointprocesses/code/lifboltzmanspikes.m new file mode 100644 index 0000000..14640e4 --- /dev/null +++ b/pointprocesses/code/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/pointprocesses/code/liffano.m b/pointprocesses/code/liffano.m new file mode 100644 index 0000000..b90403f --- /dev/null +++ b/pointprocesses/code/liffano.m @@ -0,0 +1,23 @@ +input = 65.0; % lifadapt 100Hz +%input = 8.0; % lifadapt 10Hz +%input = 15.7; % lif 100Hz +%input = 8.3; % lif 10Hz +trials = 10; +tmax = 100.0; +Dnoise = 0.1; +Dounoise = 5e1; +outau = 10.0; +adapttau = 0.1; +adaptincr = 5.0; + +%spikes = lifouadaptspikes( trials, input, 1.0, Dnoise, Dounoise, outau, adapttau, adaptincr ); +%spikeraster( spikes ); +%return; + +% generate spikes: +%spikes = lifspikes( trials, input, tmax, noise ); +spikes = lifouspikes( trials, input, tmax, Dounoise, outau ); +%spikes = lifadaptspikes( trials, input, tmax, Dnoise, adapttau, adaptincr ); +%spikes = lifouadaptspikes( trials, input, tmax, Dnoise, Dounoise, outau, adapttau, adaptincr ); + +fano( spikes ); diff --git a/pointprocesses/code/lifficurves.m b/pointprocesses/code/lifficurves.m new file mode 100644 index 0000000..5106c12 --- /dev/null +++ b/pointprocesses/code/lifficurves.m @@ -0,0 +1,36 @@ +% lif: +noises = [ 1e-5 1e-4 1e-3 1e-2 1e-1 ]; +inputs = 0:0.1:20; +duration = 50.0; +% pif: +% noises = [ 1e-1 1 1e1 1e2 1e3 ]; +% inputs = -5:0.1:10; +% duration = 100.0; + +f = figure; +hold all; +for noise = noises + fprintf( 'noise=%.0e\n', noise ); + rates = []; + for input = inputs + spikes = lifspikes( 10, input, duration, noise ); + % spikes = pifspikes( 50, input, duration, noise ); + nspikes = 0; + for k = 1:length( spikes ) + nspikes = nspikes + length( spikes{k} ); + end + rate = nspikes/duration/length( spikes ); + %fprintf( 'I=%g N=%d rate=%g\n', input, length( spikes ), rate ) + rates = [ rates rate ]; + end + plot( inputs, rates, 'LineWidth', 2, 'DisplayName', sprintf( 'D=%.0e', noise ) ); +end +xlabel( 'Input' ); +xlim( [ inputs(1) inputs(end) ] ) +ylabel( 'Firing rate [Hz]' ); +%title( 'Leaky integrate-and-fire' ) +title( 'Perfect integrate-and-fire' ) +legend( '-DynamicLegend', 'Location', 'NorthWest' ) +hold off + + diff --git a/pointprocesses/code/lifinputdiscriminationslope.m b/pointprocesses/code/lifinputdiscriminationslope.m new file mode 100644 index 0000000..3a52ef0 --- /dev/null +++ b/pointprocesses/code/lifinputdiscriminationslope.m @@ -0,0 +1,65 @@ +%input = 15.7; % lif 100Hz +%input = 8.3; % lif 10Hz +trials = 10; +tmax = 50.0; +Dnoise = 1.0; +imax = 25.0; +ithresh = 10.0; +slope=0.2; + +% inputs = 0:2:30; +% rates = zeros( size( inputs ) ); +% for j = 1:length( inputs ) +% input = inputs(j); +% spikes = lifboltzmanspikes( trials, input, tmax, Dnoise, imax, ithresh, slope ); +% nspikes = 0; +% for k = 1:length( spikes ) +% nspikes = nspikes + length( spikes{k} ); +% end +% rate = nspikes/tmax/length( spikes ); +% rates(j) = rate; +% end +% plot( inputs, rates ); +% grid on; +% return + +input = 10.0; % 80 Hz + +window = 0.2; +slopes = 0.1:0.1:2.0; +pmax = zeros( size( slopes) ); +for j = 1:length( slopes ) + slope = slopes( j ); + spikes = lifboltzmanspikes( trials, input, tmax, Dnoise, imax, ithresh, slope ); + [ n1, bins1 ] = counthist( spikes, w ); + + spikes = lifboltzmanspikes( trials, input+1.0, tmax, Dnoise, imax, ithresh, slope ); + [ n2, bins2 ] = counthist( spikes, w ); + + subplot( 2, 1, 1 ); + bar( bins1, n1, 'b' ); + hold on; + bar( bins2, n2, 'r' ); + hold off; + + subplot( 2, 1, 2 ); + bmax = max( [ length( bins1 ), length( bins2 ) ] ); + decision1 = zeros( bmax, 1 ); + decision2 = zeros( bmax, 1 ); + cs1 = ones( bmax, 1 ); + cs1(1:length(n1)) = cumsum( n1 ); + cs2 = ones( bmax, 1 ); + cs2(1:length(n2)) = cumsum( n2 ); + cbins = 0:1:bmax-1; + plot( cbins, cs1, 'b' ); + hold on; + plot( cbins, cs2, 'r' ); + plot( cbins, cs1-cs2, 'g' ); + hold off; + pause( 0.1 ); + pmax(j) = max( cs1-cs2 ); +end + +clf; +subplot( 1, 1, 1 ); +plot( slopes, pmax ); diff --git a/pointprocesses/code/lifinputdiscriminationtime.m b/pointprocesses/code/lifinputdiscriminationtime.m new file mode 100644 index 0000000..9cd4603 --- /dev/null +++ b/pointprocesses/code/lifinputdiscriminationtime.m @@ -0,0 +1,51 @@ +input = 65.0; % lifadapt 100Hz +%input = 8.0; % lifadapt 10Hz +%input = 15.7; % lif 100Hz +%input = 8.3; % lif 10Hz +trials = 10; +tmax = 50.0; +Dnoise = 0.1; +Dounoise = 5e1; +outau = 10.0; +adapttau = 0.2; +adaptincr = 0.5; + +windows = 0.05:0.05:1.0; +pmax = zeros( size( windows ) ); +for j = 1:length( windows ) + w = windows( j ); + spikes = lifadaptspikes( trials, input, tmax, Dnoise, adapttau, adaptincr ); + %spikes = lifouspikes( trials, input, tmax, Dounoise, outau); + [ n1, bins1 ] = counthist( spikes, w ); + + spikes = lifadaptspikes( trials, input+10.0, tmax, Dnoise, adapttau, adaptincr ); + %spikes = lifouspikes( trials, input+10.0, tmax, Dounoise, outau ); + [ n2, bins2 ] = counthist( spikes, w ); + + subplot( 2, 1, 1 ); + bar( bins1, n1, 'b' ); + hold on; + bar( bins2, n2, 'r' ); + hold off; + + subplot( 2, 1, 2 ); + bmax = max( [ length( bins1 ), length( bins2 ) ] ); + decision1 = zeros( bmax, 1 ); + decision2 = zeros( bmax, 1 ); + cs1 = ones( bmax, 1 ); + cs1(1:length(n1)) = cumsum( n1 ); + cs2 = ones( bmax, 1 ); + cs2(1:length(n2)) = cumsum( n2 ); + cbins = 0:1:bmax-1; + plot( cbins, cs1, 'b' ); + hold on; + plot( cbins, cs2, 'r' ); + plot( cbins, cs1-cs2, 'g' ); + hold off; + pause( 0.1 ); + pmax(j) = max( cs1-cs2 ); +end + +clf; +subplot( 1, 1, 1 ); +plot( windows, pmax ); diff --git a/pointprocesses/code/lifisih.m b/pointprocesses/code/lifisih.m new file mode 100644 index 0000000..f4e7a8e --- /dev/null +++ b/pointprocesses/code/lifisih.m @@ -0,0 +1,35 @@ +%input = 65.0; % lifadapt 100Hz +%input = 8.0; % lifadapt 10Hz +input = 15.7; % lif 100Hz +%input = 8.3; % lif 10Hz +trials = 10; +tmax = 100.0; +noise = 1e-1; +adapttau = 0.1; +adaptincr = 5.0; + +% generate spikes: +spikes = lifspikes( trials, input, tmax, noise ); +%spikes = lifadaptspikes( trials, input, tmax, noise, adapttau, adaptincr ); + +% interspike intervals: +isivec = isis( spikes ); +% histogram +f = figure( 1 ); +isihist( isivec, 10e-4 ); +hold on +% theoretical density: +misi = mean( isivec ); +disi = var( isivec )/2.0/misi^3; +xmax = 3.0*misi; +x = 0:0.0001:xmax; +plot( 1000.0*x, inversegauss( x, misi, disi ), 'r', 'LineWidth', 3 ); +% plot details: +title( sprintf( 'LIF, input=%g, nisi=%d', input, length( isivec ) ) ) +xlim( [ 0.0 1000.0*xmax ] ) +legend( 'data', 'inverse Gaussian' ) +hold off + +% serial correlations: +f = figure( 2 ); +isiserialcorr( isivec, 10 ); diff --git a/pointprocesses/code/lifisistats.m b/pointprocesses/code/lifisistats.m new file mode 100644 index 0000000..1dd1321 --- /dev/null +++ b/pointprocesses/code/lifisistats.m @@ -0,0 +1,63 @@ +inputs = 0:0.1:20; % lif +inputs = 0:0.1:10; % pif +avisi = []; +sdisi = []; +cvisi = []; +dcisi = []; + +for input = inputs + input + % spikes = lifspikes( 100, input, 100.0, 1e-2 ); + spikes = pifspikes( 100, input, 100.0, 1e-1 ); + isivec = isis( spikes ); + if length( isivec ) <= 1 + av = Inf; + sd = NaN; + cv = NaN; + dc = NaN; + else + av = mean( isivec ); + sd = std( isivec ); + if av > 0.0 + cv = sd/av; + dc = sd^2.0/2.0/av^3; + else + cv = NaN; + dc = NaN; + end + end + avisi = [ avisi av ]; + sdisi = [ sdisi sd ]; + cvisi = [ cvisi cv ]; + dcisi = [ dcisi dc ]; +end + +f = figure; +subplot( 2, 2, 1 ); +plot( inputs, 1.0./avisi, '-b', 'LineWidth', 3 ); +xlabel( 'Input' ); +xlim( [ inputs(1) inputs(end) ] ) +title( 'Mean rate [Hz]' ); + +subplot( 2, 2, 2 ); +plot( inputs, 1000.0*avisi, '-b', 'LineWidth', 3 ); +hold on; +plot( inputs, 1000.0*sdisi, '-c', 'LineWidth', 3 ); +hold off; +xlabel( 'Input' ); +xlim( [ inputs(1) inputs(end) ] ) +ylim( [ 0 1000 ] ) +title( 'ISI [ms]' ); +legend( 's.d. ISI', 'mean ISI' ); + +subplot( 2, 2, 3 ); +plot( inputs, cvisi, '-b', 'LineWidth', 3 ); +xlabel( 'Input' ); +xlim( [ inputs(1) inputs(end) ] ) +title( 'CV' ); + +subplot( 2, 2, 4 ); +plot( inputs, dcisi, '-b', 'LineWidth', 3 ); +xlabel( 'Input' ); +xlim( [ inputs(1) inputs(end) ] ) +title( 'D [Hz]' ); diff --git a/pointprocesses/code/lifouadaptspikes.m b/pointprocesses/code/lifouadaptspikes.m new file mode 100644 index 0000000..7dddb2d --- /dev/null +++ b/pointprocesses/code/lifouadaptspikes.m @@ -0,0 +1,64 @@ +function spikes = lifouadaptspikes( trials, input, tmaxdt, D, Dou, outau, tauadapt, adaptincr ) +% Generate spike times of a leaky integrate-and-fire neuron +% with colored noise and 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 noise +% Dou: the strength of additive colored noise +% outau: time constant of the colored noise +% tauadapt: adaptation time constant +% adaptincr: adaptation strength + + tau = 0.01; + if nargin < 4 + D = 1e0; + end + if nargin < 5 + Dou = 1e0; + end + if nargin < 6 + outau = 1.0; + end + if nargin < 7 + tauadapt = 0.1; + end + if nargin < 8 + 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; + n = 0.0; + a = 0.0; + noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt); + noiseou = sqrt(2.0*Dou)*randn( length( input ), 1 )/sqrt(dt); + for i=1:length( noise ) + n = n + ( - n + noiseou(i))*dt/outau; + v = v + ( - v - a + noise(i) + n + input(i))*dt/tau; + a = a + ( - a )*dt/tauadapt; + if v >= vthresh + v = vreset; + a = a + adaptincr; + 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/pointprocesses/code/lifouspikes.m b/pointprocesses/code/lifouspikes.m new file mode 100644 index 0000000..fc1f5d5 --- /dev/null +++ b/pointprocesses/code/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/pointprocesses/code/lifrateisicorr.m b/pointprocesses/code/lifrateisicorr.m new file mode 100644 index 0000000..6276e79 --- /dev/null +++ b/pointprocesses/code/lifrateisicorr.m @@ -0,0 +1,34 @@ +% relation between firing rate and serieller correlation + +input = 65.0; % lifadapt 100Hz +%input = 8.0; % lifadapt 10Hz +trials = 10; +tmax = 50.0; +noise = 1e-5; +adapttau = 0.1; +adaptincr = 0.5; + +clf; +for adapttau = 0.01:0.02:0.2 + inputs = 1:5:120; + iscs = zeros( size( inputs ) ); + rates = zeros( size( inputs ) ); + for k = 1:length(inputs) + input = inputs(k); + % generate spikes: + spikes = lifadaptspikes( trials, input, tmax, noise, adapttau, adaptincr ); + isivec = isis( spikes ); + isc = isiserialcorr( isivec, 10 ); + iscs(k) = isc(2); + rates(k) = 1.0/mean( isivec ); + end + + subplot( 2, 1, 1 ); + hold on; + plot( inputs, rates ); + hold off; + subplot( 2, 1, 2 ); + hold on; + plot( rates, iscs ); + hold off; +end diff --git a/pointprocesses/code/lifspikes.m b/pointprocesses/code/lifspikes.m new file mode 100644 index 0000000..cfa0f55 --- /dev/null +++ b/pointprocesses/code/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/pointprocesses/code/pifouspikes.m b/pointprocesses/code/pifouspikes.m new file mode 100644 index 0000000..b6516cc --- /dev/null +++ b/pointprocesses/code/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/pointprocesses/code/pifspikes.m b/pointprocesses/code/pifspikes.m new file mode 100644 index 0000000..397658c --- /dev/null +++ b/pointprocesses/code/pifspikes.m @@ -0,0 +1,38 @@ +function spikes = pifspikes( trials, input, tmaxdt, D ) +% 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 + + tau = 0.01; + if nargin < 4 + D = 1e-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 + 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 + ( 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/pointprocesses/code/poissonisih.m b/pointprocesses/code/poissonisih.m new file mode 100644 index 0000000..f006e2b --- /dev/null +++ b/pointprocesses/code/poissonisih.m @@ -0,0 +1,27 @@ +rate = 100.0; +trials = 50; +tmax = 100.0; + +% generate spikes: +spikes = poissonspikes( trials, rate, tmax ); +% interspike intervals: +isivec = isis( spikes ); +% histogram +f = figure( 1 ); +isihist( isivec ); +hold on +% theoretical density: +xmax = 5.0/rate; +x = 0:0.0001:xmax; +y = rate*exp(-rate*x); +plot( 1000.0*x, y, 'r', 'LineWidth', 3 ); +% plot details: +title( sprintf( 'Poisson spike trains, rate=%g Hz, nisi=%d', rate, length( isivec ) ) ) +xlim( [ 0.0 1000.0*xmax ] ) +ylim( [ 0.0 1.1*rate ] ) +legend( 'data', 'poisson' ) +hold off + +% serial correlations: +f = figure( 2 ); +isiserialcorr( isivec, 10 ); diff --git a/pointprocesses/code/poissonisistats.m b/pointprocesses/code/poissonisistats.m new file mode 100644 index 0000000..0c97e3d --- /dev/null +++ b/pointprocesses/code/poissonisistats.m @@ -0,0 +1,46 @@ +rates = 1:1:100; +avisi = []; +sdisi = []; +cvisi = []; + +for rate = rates + spikes = poissonspikes( 10, rate, 100.0 ); + isivec = isis( spikes ); + av = mean( isivec ); + sd = std( isivec ); + cv = sd/av; + avisi = [ avisi av ]; + sdisi = [ sdisi sd ]; + cvisi = [ cvisi cv ]; +end + +f = figure; +subplot( 1, 3, 1 ); +scatter( rates, 1000.0*avisi, 'b', 'filled' ); +hold on; +plot( rates, 1000.0./rates, 'r' ); +hold off; +xlabel( 'Rate \lambda [Hz]' ); +ylim( [ 0 1000 ] ); +title( 'Mean ISI [ms]' ); +legend( 'simulation', 'theory 1/\lambda' ); + +subplot( 1, 3, 2 ); +scatter( rates, 1000.0*sdisi, 'b', 'filled' ); +hold on; +plot( rates, 1000.0./rates, 'r' ); +hold off; +xlabel( 'Rate \lambda [Hz]' ); +ylim( [ 0 1000 ] ) +title( 'Standard deviation ISI [ms]' ); +legend( 'simulation', 'theory 1/\lambda' ); + +subplot( 1, 3, 3 ); +scatter( rates, cvisi, 'b', 'filled' ); +hold on; +plot( rates, ones( size( rates ) ), 'r' ); +hold off; +xlabel( 'Rate \lambda [Hz]' ); +ylim( [ 0 2 ] ) +title( 'CV' ); +legend( 'simulation', 'theory' ); diff --git a/pointprocesses/code/poissonspikes.m b/pointprocesses/code/poissonspikes.m new file mode 100644 index 0000000..f00291c --- /dev/null +++ b/pointprocesses/code/poissonspikes.m @@ -0,0 +1,20 @@ +function spikes = poissonspikes( trials, rate, tmax ) +% Generate spike times of a homogeneous poisson process +% trials: number of trials that should be generated +% rate: the rate of the Poisson process in Hertz +% tmax: the duration of each trial in seconds +% returns a cell array of vectors of spike times + + dt = 3.33e-5; + p = rate*dt; % probability of event per bin of width dt + % make sure p is small enough: + if p > 0.1 + p = 0.1 + dt = p/rate; + end + spikes = cell( trials, 1 ); + for k=1:trials + x = rand( 1, round(tmax/dt) ); % uniform random numbers for each bin + spikes{k} = find( x < p ) * dt; + end +end diff --git a/pointprocesses/code/raster.pdf b/pointprocesses/code/raster.pdf new file mode 100644 index 0000000..a20fa0e Binary files /dev/null and b/pointprocesses/code/raster.pdf differ diff --git a/pointprocesses/code/savefigpdf.m b/pointprocesses/code/savefigpdf.m new file mode 100644 index 0000000..fbe2dc2 --- /dev/null +++ b/pointprocesses/code/savefigpdf.m @@ -0,0 +1,28 @@ +function savefigpdf( fig, name, width, height ) +% Saves figure fig in pdf file name.pdf with appropriately set page size +% and fonts + +% default width: +if nargin < 3 + width = 11.7; +end +% default height: +if nargin < 4 + height = 9.0; +end + +% paper: +set( fig, 'PaperUnits', 'centimeters' ); +set( fig, 'PaperSize', [width height] ); +set( fig, 'PaperPosition', [0.0 0.0 width height] ); +set( fig, 'Color', 'white') + +% font: +set( findall( fig, 'type', 'axes' ), 'FontSize', 12 ) +set( findall( fig, 'type', 'text' ), 'FontSize', 12 ) + +% save: +saveas( fig, name, 'pdf' ) + +end + diff --git a/pointprocesses/code/spikeraster.m b/pointprocesses/code/spikeraster.m new file mode 100644 index 0000000..f7ff5d4 --- /dev/null +++ b/pointprocesses/code/spikeraster.m @@ -0,0 +1,17 @@ +function spikeraster( spikes ) +% Display a spike raster of the spike times given in spikes. +% spikes: a cell array of vectors of spike times + +ntrials = length(spikes); +for k = 1:ntrials + times = 1000.0*spikes{k}; % conversion to ms + for i = 1:length( times ) + line([times(i) times(i)],[k-0.4 k+0.4], 'Color', 'k' ); + end +end +xlabel( 'Time [ms]' ); +ylabel( 'Trials'); +ylim( [ 0.3 ntrials+0.7 ] ) + +end + diff --git a/pointprocesses/exercises/hompoissonisih.m b/pointprocesses/exercises/hompoissonisih.m new file mode 100644 index 0000000..cd2bc06 --- /dev/null +++ b/pointprocesses/exercises/hompoissonisih.m @@ -0,0 +1,18 @@ +% generate spike times: +rate = 20.0; +spikes = hompoissonspikes( 10, rate, 50.0 ); +% isi histogram: +isivec = isis( spikes ); +isihist( isivec ); +hold on +% theoretical density: +xmax = 5.0/rate; +x = 0:0.0001:xmax; +y = rate*exp(-rate*x); +plot( 1000.0*x, y, 'r', 'LineWidth', 3 ); +% plot details: +title( sprintf( 'Poisson spike trains, rate=%g Hz, nisi=%d', rate, length( isivec ) ) ) +xlim( [ 0.0 1000.0*xmax ] ) +ylim( [ 0.0 1.1*rate ] ) +legend( 'data', 'poisson' ) +hold off diff --git a/pointprocesses/exercises/hompoissonisistats.m b/pointprocesses/exercises/hompoissonisistats.m new file mode 100644 index 0000000..7ca3cf3 --- /dev/null +++ b/pointprocesses/exercises/hompoissonisistats.m @@ -0,0 +1,46 @@ +rates = 1:1:100; +avisi = []; +sdisi = []; +cvisi = []; + +for rate = rates + spikes = hompoissonspikes( 10, rate, 100.0 ); + isivec = isis( spikes ); + av = mean( isivec ); + sd = std( isivec ); + cv = sd/av; + avisi = [ avisi av ]; + sdisi = [ sdisi sd ]; + cvisi = [ cvisi cv ]; +end + +f = figure; +subplot( 1, 3, 1 ); +scatter( rates, 1000.0*avisi, 'b', 'filled' ); +hold on; +plot( rates, 1000.0./rates, 'r' ); +hold off; +xlabel( 'Rate \lambda [Hz]' ); +ylim( [ 0 1000 ] ); +title( 'Mean ISI [ms]' ); +legend( 'simulation', 'theory 1/\lambda' ); + +subplot( 1, 3, 2 ); +scatter( rates, 1000.0*sdisi, 'b', 'filled' ); +hold on; +plot( rates, 1000.0./rates, 'r' ); +hold off; +xlabel( 'Rate \lambda [Hz]' ); +ylim( [ 0 1000 ] ) +title( 'Standard deviation ISI [ms]' ); +legend( 'simulation', 'theory 1/\lambda' ); + +subplot( 1, 3, 3 ); +scatter( rates, cvisi, 'b', 'filled' ); +hold on; +plot( rates, ones( size( rates ) ), 'r' ); +hold off; +xlabel( 'Rate \lambda [Hz]' ); +ylim( [ 0 2 ] ) +title( 'CV' ); +legend( 'simulation', 'theory' ); diff --git a/pointprocesses/exercises/hompoissonspikes.m b/pointprocesses/exercises/hompoissonspikes.m new file mode 100644 index 0000000..12af153 --- /dev/null +++ b/pointprocesses/exercises/hompoissonspikes.m @@ -0,0 +1,19 @@ +function spikes = hompoissonspikes( trials, rate, tmax ) +% Generate spike times of a homogeneous poisson process +% trials: number of trials that should be generated +% rate: the rate of the Poisson process in Hertz +% tmax: the duration of each trial in seconds +% returns a cell array of vectors of spike times + + dt = 3.33e-5; + p = rate*dt; + if p > 0.2 + p = 0.2 + dt = p/rate; + end + x = rand( trials, ceil(tmax/dt) ); + spikes = cell( trials, 1 ); + for k=1:trials + spikes{k} = find( x(k,:) >= 1.0-p ) * dt; + end +end diff --git a/pointprocesses/exercises/iafisistats-solutions.pdf b/pointprocesses/exercises/iafisistats-solutions.pdf new file mode 100644 index 0000000..d1b6c63 Binary files /dev/null and b/pointprocesses/exercises/iafisistats-solutions.pdf differ diff --git a/pointprocesses/exercises/iafisistats.pdf b/pointprocesses/exercises/iafisistats.pdf new file mode 100644 index 0000000..c19617b Binary files /dev/null and b/pointprocesses/exercises/iafisistats.pdf differ diff --git a/pointprocesses/exercises/iafisistats.tex b/pointprocesses/exercises/iafisistats.tex new file mode 100644 index 0000000..53ca479 --- /dev/null +++ b/pointprocesses/exercises/iafisistats.tex @@ -0,0 +1,142 @@ +\documentclass[addpoints,10pt]{exam} +\usepackage{url} +\usepackage{color} +\usepackage{hyperref} +\usepackage{graphicx} + +\pagestyle{headandfoot} +\runningheadrule +\firstpageheadrule + +\firstpageheader{Scientific Computing}{Integrate-and-fire models}{Oct 28, 2014} +%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014} +\firstpagefooter{}{}{} +\runningfooter{}{}{} +\pointsinmargin +\bracketedpoints + +%\printanswers +\shadedsolutions + +\usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro + +%%%%% 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} + +\sffamily +%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{questions} + \question \textbf{Statistics of integrate-and-fire neurons} + For the following use different variants of the leaky integrate-and-fire models provided in \texttt{lifspikes.m}, + \texttt{lifouspikes.m}, and \texttt{lifadaptspikes.m} do generate some spike train data. + Use the functions you wrote for the Poisson process to analyze the statistics of the spike trains. + \begin{parts} + \part Generate a few trials of the two models for two different inputs + that result in qualitatively different spike trains and display + them in a raster plot. Decide for a noise strength (good values to try are 0.001, 0.01, 0.1, 1). + \begin{solution} + \begin{lstlisting} +spikes = pifspikes( 10, 1.0, 0.5, 0.01 ); +%spikes = pifspikes( 10, 10.0, 0.5, 0.01 ); +%spikes = lifspikes( 10, 11.0, 0.5, 0.001 ); +%spikes = lifspikes( 10, 15.0, 0.5, 0.001 ); +spikeraster( spikes ) + \end{lstlisting} + \mbox{}\\[-3ex] + \colorbox{white}{\includegraphics[width=0.48\textwidth]{pifraster02}} + \colorbox{white}{\includegraphics[width=0.48\textwidth]{pifraster10}}\\ + \colorbox{white}{\includegraphics[width=0.48\textwidth]{lifraster10}} + \colorbox{white}{\includegraphics[width=0.48\textwidth]{lifraster15}} + \end{solution} + + + \part The inverse Gaussian describes the interspike interval distribution of a PIF driven with white noise: + \[ p(T) = \frac{1}{\sqrt{4\pi D T^3}}\exp\left[-\frac{(T-\langle T \rangle)^2}{4DT\langle T \rangle^2}\right] \] + where $\langle T \rangle$ is the mean interspike interval and + \[ D = \frac{\langle(T - \langle T \rangle)^2\rangle}{2 \langle T \rangle^3} \] + is the diffusion coefficient (variance of the interspike intervals + $T$ divided by two times the mean cubed). Show in two plots how + this distribution depends on $\langle T \rangle$ and $D$. + \begin{solution} + \lstinputlisting{simulations/inversegauss.m} + \lstinputlisting{simulations/inversegaussplot.m} + \colorbox{white}{\includegraphics[width=0.98\textwidth]{inversegauss}} + \end{solution} + + \part Extent your function plotting an interspike interval histogram + to also report the diffusion coefficient $D$. + \begin{solution} + \begin{lstlisting} +... +% annotation: +misi = mean( isis ); +sdisi = std( isis ); +disi = sdisi^2.0/2.0/misi^3; +text( 0.6, 0.7, sprintf( 'mean=%.1f ms', 1000.0*misi ), 'Units', 'normalized' ) +text( 0.6, 0.6, sprintf( 'std=%.1f ms', 1000.0*sdisi ), 'Units', 'normalized' ) +text( 0.6, 0.5, sprintf( 'CV=%.2f', sdisi/misi ), 'Units', 'normalized' ) +text( 0.6, 0.4, sprintf( 'D=%.1f Hz', disi ), 'Units', 'normalized' ) +... + \end{lstlisting} + \end{solution} + + \part Compare intersike interval histograms obtained from the LIF and PIF models with the inverse Gaussian. + \begin{solution} + \lstinputlisting{simulations/lifisih.m} + \colorbox{white}{\includegraphics[width=0.48\textwidth]{pifisih01}} + \colorbox{white}{\includegraphics[width=0.48\textwidth]{pifisih10}}\\ + \colorbox{white}{\includegraphics[width=0.48\textwidth]{lifisih08}} + \colorbox{white}{\includegraphics[width=0.48\textwidth]{lifisih16}} + \end{solution} + + \part Plot the firing rate (inverse mean interspike interval), + mean interspike interval, the corresponding standard deviation, + CV, and diffusion coefficient as a function of the input to the LIF + and the PIF with noise strength set to 0.01. + \begin{solution} + \lstinputlisting{simulations/lifisistats.m} + Leaky integrate-and-fire:\\ + \colorbox{white}{\includegraphics[width=0.8\textwidth]{lifisistats}}\\ + Perfect integrate-and-fire:\\ + \colorbox{white}{\includegraphics[width=0.8\textwidth]{pifisistats}} + \end{solution} + + \part Plot the firing rate as a function of input of the LIF and the PIF for various values + of the noise strength. + \begin{solution} + \lstinputlisting{simulations/lifficurves.m} + Leaky integrate-and-fire:\\ + \colorbox{white}{\includegraphics[width=0.7\textwidth]{lifficurves}}\\ + Perfect integrate-and-fire:\\ + \colorbox{white}{\includegraphics[width=0.7\textwidth]{pifficurves}} + \end{solution} + + \part Use the functions for computing serial correlations, count statistics and fano factors + to further explore the statistics of the integrate-and-fire models! + + \end{parts} + +\end{questions} + + +\end{document} diff --git a/pointprocesses/exercises/inversegauss.pdf b/pointprocesses/exercises/inversegauss.pdf new file mode 100644 index 0000000..798a9ec Binary files /dev/null and b/pointprocesses/exercises/inversegauss.pdf differ diff --git a/pointprocesses/exercises/lifficurves.pdf b/pointprocesses/exercises/lifficurves.pdf new file mode 100644 index 0000000..fc228b2 Binary files /dev/null and b/pointprocesses/exercises/lifficurves.pdf differ diff --git a/pointprocesses/exercises/lifisih08.pdf b/pointprocesses/exercises/lifisih08.pdf new file mode 100644 index 0000000..4908f72 Binary files /dev/null and b/pointprocesses/exercises/lifisih08.pdf differ diff --git a/pointprocesses/exercises/lifisih16.pdf b/pointprocesses/exercises/lifisih16.pdf new file mode 100644 index 0000000..5c4fb3f Binary files /dev/null and b/pointprocesses/exercises/lifisih16.pdf differ diff --git a/pointprocesses/exercises/lifisistats.pdf b/pointprocesses/exercises/lifisistats.pdf new file mode 100644 index 0000000..f573bae Binary files /dev/null and b/pointprocesses/exercises/lifisistats.pdf differ diff --git a/pointprocesses/exercises/lifraster10.pdf b/pointprocesses/exercises/lifraster10.pdf new file mode 100644 index 0000000..c6e5f67 Binary files /dev/null and b/pointprocesses/exercises/lifraster10.pdf differ diff --git a/pointprocesses/exercises/lifraster15.pdf b/pointprocesses/exercises/lifraster15.pdf new file mode 100644 index 0000000..fac5b4d Binary files /dev/null and b/pointprocesses/exercises/lifraster15.pdf differ diff --git a/pointprocesses/exercises/pifficurves.pdf b/pointprocesses/exercises/pifficurves.pdf new file mode 100644 index 0000000..8ef6ffa Binary files /dev/null and b/pointprocesses/exercises/pifficurves.pdf differ diff --git a/pointprocesses/exercises/pifisih01.pdf b/pointprocesses/exercises/pifisih01.pdf new file mode 100644 index 0000000..d485e57 Binary files /dev/null and b/pointprocesses/exercises/pifisih01.pdf differ diff --git a/pointprocesses/exercises/pifisih10.pdf b/pointprocesses/exercises/pifisih10.pdf new file mode 100644 index 0000000..bb0f667 Binary files /dev/null and b/pointprocesses/exercises/pifisih10.pdf differ diff --git a/pointprocesses/exercises/pifisistats.pdf b/pointprocesses/exercises/pifisistats.pdf new file mode 100644 index 0000000..3c38580 Binary files /dev/null and b/pointprocesses/exercises/pifisistats.pdf differ diff --git a/pointprocesses/exercises/pifraster02.pdf b/pointprocesses/exercises/pifraster02.pdf new file mode 100644 index 0000000..e23d1b4 Binary files /dev/null and b/pointprocesses/exercises/pifraster02.pdf differ diff --git a/pointprocesses/exercises/pifraster10.pdf b/pointprocesses/exercises/pifraster10.pdf new file mode 100644 index 0000000..c6534b0 Binary files /dev/null and b/pointprocesses/exercises/pifraster10.pdf differ diff --git a/pointprocesses/exercises/poisson-solutions.pdf b/pointprocesses/exercises/poisson-solutions.pdf new file mode 100644 index 0000000..4546a8d Binary files /dev/null and b/pointprocesses/exercises/poisson-solutions.pdf differ diff --git a/pointprocesses/exercises/poisson.pdf b/pointprocesses/exercises/poisson.pdf new file mode 100644 index 0000000..aa1756e Binary files /dev/null and b/pointprocesses/exercises/poisson.pdf differ diff --git a/pointprocesses/exercises/poisson.tex b/pointprocesses/exercises/poisson.tex new file mode 100644 index 0000000..4b8f0f0 --- /dev/null +++ b/pointprocesses/exercises/poisson.tex @@ -0,0 +1,160 @@ +\documentclass[addpoints,10pt]{exam} +\usepackage{url} +\usepackage{color} +\usepackage{hyperref} +\usepackage{graphicx} + +\pagestyle{headandfoot} +\runningheadrule +\firstpageheadrule + +\firstpageheader{Scientific Computing}{Homogeneous Poisson process}{Oct 27, 2014} +%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014} +\firstpagefooter{}{}{} +\runningfooter{}{}{} +\pointsinmargin +\bracketedpoints + +%\printanswers +\shadedsolutions + +\usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro + +%%%%% 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} + +\sffamily +%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{questions} + \question \textbf{Homogeneous Poisson process} + We use the Poisson process to generate spike trains on which we can test and imrpove some + standard analysis functions. + + A homogeneous Poisson process of rate $\lambda$ (measured in Hertz) is a point process + where the probability of an event is independent of time $t$ and independent of previous events. + The probability $P$ of an event within a bin of width $\Delta t$ is + \[ P = \lambda \cdot \Delta t \] + for sufficiently small $\Delta t$. + \begin{parts} + + \part Write a function that generates $n$ homogeneous Poisson spike trains of a given duration $T_{max}$ + with rate $\lambda$. + \begin{solution} + \lstinputlisting{hompoissonspikes.m} + \end{solution} + + \part Using this function, generate a few trials and display them in a raster plot. + \begin{solution} + \lstinputlisting{simulations/spikeraster.m} + \begin{lstlisting} +spikes = hompoissonspikes( 10, 100.0, 0.5 ); +spikeraster( spikes ) + \end{lstlisting} + \mbox{}\\[-3ex] + \colorbox{white}{\includegraphics[width=0.7\textwidth]{poissonraster100hz}} + \end{solution} + + \part Write a function that extracts a single vector of interspike intervals + from the spike times returned by the first function. + \begin{solution} + \lstinputlisting{simulations/isis.m} + \end{solution} + + \part Write a function that plots the interspike-interval histogram + from a vector of interspike intervals. The function should also + compute the mean, the standard deviation, and the CV of the intervals + and display the values in the plot. + \begin{solution} + \lstinputlisting{simulations/isihist.m} + \end{solution} + + \part Compute histograms for Poisson spike trains with rate + $\lambda=100$\,Hz. Play around with $T_{max}$ and $n$ and the bin width + (start with 1\,ms) of the histogram. + How many + interspike intervals do you approximately need to get a ``nice'' + histogram? How long do you need to record from the neuron? + \begin{solution} + About 5000 intervals for 25 bins. This corresponds to a $5000 / 100\,\hertz = 50\,\second$ recording + of a neuron firing with 100\,\hertz. + \end{solution} + + \part Compare the histogram with the true distribution of intervals $T$ of the Poisson process + \[ p(T) = \lambda e^{-\lambda T} \] + for various rates $\lambda$. + \begin{solution} + \lstinputlisting{hompoissonisih.m} + \colorbox{white}{\includegraphics[width=0.48\textwidth]{poissonisih100hz}} + \colorbox{white}{\includegraphics[width=0.48\textwidth]{poissonisih20hz}} + \end{solution} + + \part What happens if you make the bin width of the histogram smaller than $\Delta t$ + used for generating the Poisson spikes? + \begin{solution} + The bins between the discretization have zero entries. Therefore + the other ones become higher than they should be. + \end{solution} + + \part Plot the mean interspike interval, the corresponding standard deviation, and the CV + as a function of the rate $\lambda$ of the Poisson process. + Compare the simulations with the theoretical expectations for the dependence on $\lambda$. + \begin{solution} + \lstinputlisting{hompoissonisistats.m} + \colorbox{white}{\includegraphics[width=0.98\textwidth]{poissonisistats}} + \end{solution} + + \part Write a function that computes serial correlations for the interspike intervals + for a range of lags. + The serial correlations $\rho_k$ at lag $k$ are defined as + \[ \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)} \] + Use this function to show that interspike intervals of Poisson spikes are independent. + \begin{solution} + \lstinputlisting{simulations/isiserialcorr.m} + \colorbox{white}{\includegraphics[width=0.98\textwidth]{poissonserial100hz}} + \end{solution} + + \part Write a function that generates from spike times + a histogram of spike counts in a count window of given duration $W$. + The function should also plot the Poisson distribution + \[ P(k) = \frac{(\lambda W)^ke^{\lambda W}}{k!} \] + for the rate $\lambda$ determined from the spike trains. + \begin{solution} + \lstinputlisting{simulations/counthist.m} + \colorbox{white}{\includegraphics[width=0.48\textwidth]{poissoncounthistdist100hz10ms}} + \colorbox{white}{\includegraphics[width=0.48\textwidth]{poissoncounthistdist100hz100ms}} + \end{solution} + + \part Write a function that computes mean count, variance of count and the corresponding Fano factor + for a range of count window durations. The function should generate tow plots: one plotting + the count variance against the mean, the other one the Fano factor as a function of the window duration. + \begin{solution} + \lstinputlisting{simulations/fano.m} + \colorbox{white}{\includegraphics[width=0.98\textwidth]{poissonfano100hz}} + \end{solution} + + \end{parts} + +\end{questions} + + +\end{document} diff --git a/pointprocesses/exercises/poissoncounthistdist100hz100ms.pdf b/pointprocesses/exercises/poissoncounthistdist100hz100ms.pdf new file mode 100644 index 0000000..aa25500 Binary files /dev/null and b/pointprocesses/exercises/poissoncounthistdist100hz100ms.pdf differ diff --git a/pointprocesses/exercises/poissoncounthistdist100hz10ms.pdf b/pointprocesses/exercises/poissoncounthistdist100hz10ms.pdf new file mode 100644 index 0000000..746f30b Binary files /dev/null and b/pointprocesses/exercises/poissoncounthistdist100hz10ms.pdf differ diff --git a/pointprocesses/exercises/poissonfano100hz.pdf b/pointprocesses/exercises/poissonfano100hz.pdf new file mode 100644 index 0000000..c25dd3c Binary files /dev/null and b/pointprocesses/exercises/poissonfano100hz.pdf differ diff --git a/pointprocesses/exercises/poissonisih100hz.pdf b/pointprocesses/exercises/poissonisih100hz.pdf new file mode 100644 index 0000000..e2f4f65 Binary files /dev/null and b/pointprocesses/exercises/poissonisih100hz.pdf differ diff --git a/pointprocesses/exercises/poissonisih20hz.pdf b/pointprocesses/exercises/poissonisih20hz.pdf new file mode 100644 index 0000000..baee955 Binary files /dev/null and b/pointprocesses/exercises/poissonisih20hz.pdf differ diff --git a/pointprocesses/exercises/poissonisistats.pdf b/pointprocesses/exercises/poissonisistats.pdf new file mode 100644 index 0000000..359d45e Binary files /dev/null and b/pointprocesses/exercises/poissonisistats.pdf differ diff --git a/pointprocesses/exercises/poissonraster100hz.pdf b/pointprocesses/exercises/poissonraster100hz.pdf new file mode 100644 index 0000000..a20fa0e Binary files /dev/null and b/pointprocesses/exercises/poissonraster100hz.pdf differ diff --git a/pointprocesses/exercises/poissonserial100hz.pdf b/pointprocesses/exercises/poissonserial100hz.pdf new file mode 100644 index 0000000..ff667d9 Binary files /dev/null and b/pointprocesses/exercises/poissonserial100hz.pdf differ diff --git a/pointprocesses/lecture/Makefile b/pointprocesses/lecture/Makefile new file mode 100644 index 0000000..7a243a5 --- /dev/null +++ b/pointprocesses/lecture/Makefile @@ -0,0 +1,142 @@ +BASENAME=pointprocesses + +TEXFILE=$(BASENAME).tex +DVIFILE=$(BASENAME).dvi +PSFILE=$(BASENAME).ps +PDFFILE=$(BASENAME).pdf + +FOILSFILE=foils.pdf +THUMBNAILSFILE=thumbnails.pdf + +HTMLBASENAME=$(BASENAME)h +HTMLTEXFILE=$(BASENAME)h.tex +HTMLDIR=$(BASENAME)h + +GPTFILES=$(wildcard *.gpt) +GPTTEXFILES=$(GPTFILES:.gpt=.tex) + + +all: ps pdf talk again watchps watchpdf foils thumbs html html1 epsfigs clean cleanup cleanplots help +.PHONY: epsfigs + + +# thumbnails: +thumbs: $(THUMBNAILSFILE) +$(THUMBNAILSFILE): $(TEXFILE) $(GPTTEXFILES) + sed -e 's/setboolean{presentation}{true}/setboolean{presentation}{false}/; s/usepackage{crop}/usepackage[frame]{crop}/' $< > thumbsfoils.tex + pdflatex thumbsfoils | tee /dev/stderr | fgrep -q "Rerun to get cross-references right" && pdflatex thumbsfoils || true + pdfnup --nup 2x4 --no-landscape --paper a4paper --trim "-1cm -1cm -1cm -1cm" --outfile $@ thumbsfoils.pdf '1-19' + rm thumbsfoils.* + +# transparencies: +foils: $(FOILSFILE) +$(FOILSFILE): $(TEXFILE) $(GPTTEXFILES) + sed -e 's/setboolean{presentation}{true}/setboolean{presentation}{false}/' $< > tfoils.tex + pdflatex tfoils | tee /dev/stderr | fgrep -q "Rerun to get cross-references right" && pdflatex tfoils || true + pdfnup --nup 1x2 --orient portrait --trim "-1mm -1mm -1mm -1mm" --frame true --delta "1cm 1cm" --paper a4paper --outfile tfoils2.pdf tfoils.pdf + pdfnup --nup 1x1 --orient portrait --trim "-2cm -2cm -2cm -2cm" --paper a4paper --outfile $@ tfoils2.pdf + rm tfoils.* tfoils2.pdf + +# talk: +talk: $(PDFFILE) +pdf: $(PDFFILE) +$(PDFFILE): $(TEXFILE) $(GPTTEXFILES) + pdflatex -interaction=scrollmode $< | tee /dev/stderr | fgrep -q "Rerun to get cross-references right" && pdflatex -interaction=scrollmode $< || true +# batchmode (no output, no stop on error) +# nonstopmode / scrollmode (no stop on error) +# errorstopmode (stop on error) + + +again : + pdflatex $(TEXFILE) + +watchpdf : + while true; do ! make -q pdf && make pdf; sleep 0.5; done + +# html +html : $(HTMLTEXFILE) $(GPTTEXFILES) + rm -f $(HTMLDIR)/* + htlatex $< + mkdir -p $(HTMLDIR) + mv $(HTMLBASENAME).html $(HTMLDIR) + mv $(HTMLBASENAME)*.* $(HTMLDIR) + mv z*.gif $(HTMLDIR) + cd $(HTMLDIR); for i in *.gif; do convert -page +0+0 $$i tmp.gif; mv tmp.gif $$i; done; rmtex $(HTMLBASENAME) + +#$(HTMLTEXFILE) : $(TEXFILE) Makefile +# sed 's/setboolean{html}{false}/setboolean{html}{true}/; s/\\colorbox{white}{\(.*\)}/\1/g' $< > $@ + +html1 : $(HTMLTEXFILE) $(GPTTEXFILES) + latex2html -dir $(HTMLDIR) -mkdir -subdir -nonavigation -noinfo -image_type png -notransparent -white -split 0 $< + sed 's-<I>Date:</I>--' $(HTMLDIR)/$(HTMLDIR).html > tmp.html + cp tmp.html $(HTMLDIR)/index.html + mv tmp.html $(HTMLDIR)/$(HTMLDIR).html + +$(HTMLTEXFILE) : $(TEXFILE) + sed '/^%nohtml/,/^%endnohtml/d; s/\\colorbox{white}{\(.*\)}/\1/g' $< > $@ + + +# eps of all figures: +epsfigs: + mkdir -p epsfigs; \ + for i in $(GPTFILES); do \ + { sed -n -e '1,/\\begin{document}/p' $(TEXFILE); echo "\texpicture{$${i%%.*}}"; echo "\end{document}"; } > tmp.tex; \ + latex tmp.tex; \ + dvips tmp.dvi; \ + ps2eps tmp.ps; \ + mv tmp.eps epsfigs/$${i%%.*}.eps; \ + rm tmp.*; \ + done + + +# plots: +%.tex: %.gpt whitestyles.gp + gnuplot whitestyles.gp $< + epstopdf $*.eps + + +clean : + rm -f *~ + rmtex $(BASENAME) + rm -f $(GPTTEXFILES) + +cleanup : + rm -f *~ + rmtex $(BASENAME) + rm -f $(PSFILE) $(PDFFILE) $(FOILSFILE) $(THUMBNAILSFILE) + rm -f $(GPTTEXFILES) + rm -f -r $(HTMLDIR) + + +cleanplots : + sed -n -e '/\\begin{document}/,/\\end{document}/p' $(TEXFILE) | fgrep '\input{' | grep -v '^%' | sed 's/.*input{\(.*\).tex}.*/\1.gpt/' > plot.fls + mkdir -p unusedplots + for i in *.gp*; do \ + grep -q $$i plot.fls || { grep -q $$i $$(<plot.fls) && echo $$i || mv $$i unusedplots; }; \ + done >> plot.fls + for i in $$(<plot.fls); do \ + sed "s/\([^'\" ]*\.dat\)/\n\1\n/g;" $$i | fgrep .dat; \ + done | sort | uniq > dat.fls + mkdir -p unuseddata + for i in *.dat; do \ + grep -q $$i dat.fls || mv $$i unuseddata; \ + done + rm dat.fls plot.fls + + +help : + @echo -e \ + "make pdf: make the pdf file of the talk.\n"\ + "make foils: make black&white postscript foils of the talk.\n"\ + "make thumbs: make color thumbnails of the talk.\n"\ + "make again: run latex and make the pdf file of the talk,\n"\ + " no matter whether you changed the .tex file or not.\n\n"\ + "make watchpdf: make the pdf file of the talk\n"\ + " whenever the tex file is modified.\n"\ + "make html: make a html version of the paper (in $(HTMLDIR)).\n\n"\ + "make clean: remove all intermediate files,\n"\ + " just leave the source files and the final .ps and .pdf files.\n"\ + "make cleanup: remove all intermediate files as well as\n"\ + " the final .ps and .pdf files.\n"\ + "make cleanplots: move all unused .gpt and .dat files\n"\ + " into unusedplots/ and unuseddata/, respectively." diff --git a/pointprocesses/lecture/UT_WBMW_Rot_RGB.pdf b/pointprocesses/lecture/UT_WBMW_Rot_RGB.pdf new file mode 100644 index 0000000..f54eedc --- /dev/null +++ b/pointprocesses/lecture/UT_WBMW_Rot_RGB.pdf @@ -0,0 +1,529 @@ +%PDF-1.5 %���� +1 0 obj <</Metadata 34 0 R/OCProperties<</D<</OFF[15 0 R 35 0 R]/ON[18 0 R 21 0 R 25 0 R 36 0 R 37 0 R 38 0 R]/Order 39 0 R/RBGroups[]>>/OCGs[15 0 R 18 0 R 21 0 R 25 0 R 35 0 R 36 0 R 37 0 R 38 0 R]>>/Pages 2 0 R/Type/Catalog>> endobj 34 0 obj <</Length 20818/Subtype/XML/Type/Metadata>>stream +<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> +<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41 "> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <rdf:Description rdf:about="" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <dc:format>application/pdf</dc:format> + <dc:title> + <rdf:Alt> + <rdf:li xml:lang="x-default">EKUT_WortBildMarke_W_RGB</rdf:li> + </rdf:Alt> + </dc:title> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmp="http://ns.adobe.com/xap/1.0/" + xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/"> + <xmp:CreatorTool>Adobe Illustrator CS3</xmp:CreatorTool> + <xmp:CreateDate>2010-07-08T15:07+02:00</xmp:CreateDate> + <xmp:ModifyDate>2010-09-21T13:10:33+02:00</xmp:ModifyDate> + <xmp:MetadataDate>2010-09-21T13:10:33+02:00</xmp:MetadataDate> + <xmp:Thumbnails> + <rdf:Alt> + <rdf:li rdf:parseType="Resource"> + <xmpGImg:width>256</xmpGImg:width> + <xmpGImg:height>68</xmpGImg:height> + <xmpGImg:format>JPEG</xmpGImg:format> + <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgARAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXmPm/RNIu
/wAwrs3HliLzAZdEjaWLjAJARcSJzDSlW5cRxBQ8qDbtkCN3a6fLIYRU+D1+fcl/5kaM15511RbD
SF1DUp/LLGJk9NJo5RclEuI2biTJEPs0YE0pXBIbtmiycOKNyqPifo5fFV8w/oPXvMXkXUYtLj8y
297puoMEnjg5zqiWxRnFxxTkrOxoTsScJ3pGHjxwyRMuAiUe/bn3KHmODydp3m7TrjWtDX9EweVp
PVsjbi5a3SC4txGHoGp6K1XnX4fHAatOE5ZYyIS9Xic7q9j9679B32nzflrDeW8epanb3F+YRPIr
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
XYq7FXYq/wD/2Q==</xmpGImg:image> + </rdf:li> + </rdf:Alt> + </xmp:Thumbnails> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" + xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"> + <xmpMM:DocumentID>uuid:4843E9BF348CDF11938FC449556742DA</xmpMM:DocumentID> + <xmpMM:InstanceID>uuid:b47a17de-e854-6642-a62a-d66d7f6f8213</xmpMM:InstanceID> + <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass> + <xmpMM:DerivedFrom rdf:parseType="Resource"> + <stRef:instanceID>uuid:4743E9BF348CDF11938FC449556742DA</stRef:instanceID> + <stRef:documentID>uuid:4643E9BF348CDF11938FC449556742DA</stRef:documentID> + </xmpMM:DerivedFrom> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" + xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" + xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"> + <xmpTPg:NPages>1</xmpTPg:NPages> + <xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency> + <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint> + <xmpTPg:MaxPageSize rdf:parseType="Resource"> + <stDim:w>194.999984</stDim:w> + <stDim:h>50.000049</stDim:h> + <stDim:unit>Millimeters</stDim:unit> + </xmpTPg:MaxPageSize> + <xmpTPg:PlateNames> + <rdf:Seq> + <rdf:li>Cyan</rdf:li> + <rdf:li>Magenta</rdf:li> + <rdf:li>Yellow</rdf:li> + <rdf:li>Black</rdf:li> + </rdf:Seq> + </xmpTPg:PlateNames> + <xmpTPg:SwatchGroups> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Standard-Farbfeldgruppe</xmpG:groupName> + <xmpG:groupType>0</xmpG:groupType> + <xmpG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=165 G=30 B=55</xmpG:swatchName> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:tint>100.000000</xmpG:tint> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:red>165</xmpG:red> + <xmpG:green>29</xmpG:green> + <xmpG:blue>54</xmpG:blue> + </rdf:li> + </rdf:Seq> + </xmpG:Colorants> + </rdf:li> + </rdf:Seq> + </xmpTPg:SwatchGroups> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> + <pdf:Producer>Adobe PDF library 8.00</pdf:Producer> + </rdf:Description> + </rdf:RDF> +</x:xmpmeta> + + + + + + + + + + + + + + + + + + + + + +<?xpacket end="w"?> endstream endobj 2 0 obj <</Count 1/Kids[40 0 R]/Type/Pages>> endobj 40 0 obj <</ArtBox[0.0 0.0 552.756 141.732]/BleedBox[0.0 0.0 552.756 141.732]/Contents 41 0 R/LastModified(D:20100921131033+02'00')/MediaBox[0.0 0.0 552.756 141.732]/Parent 2 0 R/PieceInfo<</Illustrator 42 0 R>>/Resources<</ExtGState<</GS0 43 0 R>>/Properties<</MC0 35 0 R/MC1 36 0 R/MC2 37 0 R/MC3 38 0 R>>>>/Thumb 44 0 R/TrimBox[0.0 0.0 552.756 141.732]/Type/Page>> endobj 41 0 obj <</Filter/FlateDecode/Length 29912>>stream +H�dW�n-� ܟ��8}%R���Y ��"`��`&@�?U�(��]�Z�H�����ǯ?��˟~^�?��_?|)������t��r�*w��z���x����+ݭ�+�9��ܮ?~{������ۿ_�_�J�ɗ�zϙ��[�|�����,ߦ�/��(ok�*w��U���j��~���W�K�^�U5�t;gh��w�N��]�U��}���C�X�S �J�_��(��nƂh��� g7�E�����s����� +�R%�+U%�x��ƥ�)�㿓��㥸3��v��ҽ�%�5n�=����r�B�{���$��.�_��#��U�U�N��/��p]Ҿ.mpn�������>�� +a�}E�M��x��ik��Q���Տ9l��L�d�9pjL�=ƇY(y�&_E�R$�E��J�2,����)��uX�<�f�l�Xh���uw���D>*Y\�l� d�| vS��ݔM���eC�b���=� �i��V��?�t�ǂܴ9>F(�qi��I^K=� +O9L�y��EGa�>����Ĺ|9p�~� +bL�0Ge�^�3U�=�7&)ꛭqa��+{�S��O5,?\QУ�q\�$��X(�c�xHn���C�2fv�H<��^6��cЬ���5������?���Cd��I J�͔�I$I.f����u��g�wRW0Moǽ�.}>�K��'v =m��B�GrD�F���]Ώ�' 3�D����X�ُCo�ݒo3n�=qIG�zM�gE1�����0�3G��sj�̥��H�N�[�^��R .z��W@��n���EF��h[��v:V؋�gd�������y�|v8�|J݆,���YxC24�2�u��f�k������À]����,��m�)�os�҆���!�G5�h�muy��+F]F�ynB�n�(�̾�7�8i}xx�h�s�(�w��N:u�a�֦,�����v�`Z<��E��^����`6>���������u���Gj��z����D/���!i�+��J,��&��by^ܭ��_qt� L%=�}t���1�T�x�Aݦ�)`� �#A�ĚeC�㹟}<�s� Ta�R�t�� +�M�a���ꢜ��Vg\f��sC;ne��W��_�#o_���fo�c�u0�K�+Mخ{h$t��f�x %4!�>}#c����t������P�CEz��9f�S�� �~���ϗ8�c����zi�~xa��+:�ȥcw6�3X� Tj�5�b��k7�|�㾠h��U��4��x�j���+"���ʭ }��I�V3����|h�`�@j!�o66����TQ�y��� ^�-��F�R�$��V�j�Zf +pX&*R�����| �F�u?������Ç��@� ,W�y-�#��N���K���Us��G�ء~n1�� u9���;��,7M�\��Ap������\{lm��+�0���pDT<�m�J�F7p���~]���I�<��Y��5��6�F����{4�?��SA��Sl�n�>�Z�54��Ai<�e۳���(֎��mݎ +8���#�Y�z`�1����Ŝ�����3�s�`߂������tJ��:��(��_}0���"Rh"9��?�&�=�_�R��L���ޔS��{*z�-�eڞ"H�k&[cVh�Xao_���!�����N��㬨����S���|��_U�WH��ӧ�$g9a�ܳ�lsz&م9�0�^��c���Uz}#�����W��x�����V�aQ+vq�;K�Ѱ� +�f]&��z�>� �e�^KZ�?�|ê��<�w�� �O�>q||�N��'b�9&-�D��%?g���ޟ�h�Ic�Ӂ�'iK���Y{��� �n�o'�m�1,��j˨�J�դ��`�[����b��"��c�f +���bm%�sd�I��;Z?m�s$YI|�t�L"� +5_s��A�Z�����G��iʊ�ե�V,��-Nd�q��6���Y�����Хc��b���?��2�)�|1{!��*Z�(R��Y߳xFC�f�?K�`�}�=����n6k�,�[[gO�/6ƫx��c��:֘eҦ� +3Q�Q�]5��wպ��!���K�Ӵ{��ĸvВt��NQY���x+���e<��+aK�nk0�ަ=q�k��'�]T\�X�.Țgt(�Z�1F�X�Ŝ��5�}���6�A� �6��}��!c�Ӎo�>�S�Q/;���6L��)cF�l����~h_�_|#��'I�=��}P�'>����լ���ԑϝh@j?{-�-J�4���-�BE��>��6��n3~���Rv�VCW��1`����aŚ�����z8<�� b��|���q0��vqv#�Y�PV�d�P���ZX�Ǯ���9sy�$l�����#Y�:':GYki�"��\O��� +��ڳB��8�� +��Y}X�T��!�t�x�3Qtj<��;��a��c��$n�Xx>:��*�vJK�eg0}i���[y����x�RV :�^|��!pDK`���EV�4{����1D�-�B&�<�������d��b�db����t?eœw X�e+�Ӭ�݊[�{2�5w�/J~���c-m��8Q��Kv�cK��0NQ'�}9O;c�w�nb�xI�BE�@�U�u��r5C�;��( �d����߸�6M�,RB��~|����f�^X�nu8���l3�("�kM�ƺ%�A����_|��+#��/!�w����0\��St=m��Y�h��Tq�u'�H�}��Q�w� �3�w� 6+�gz���MoQ�a;�C0wQ~��&����Pa��fP˧&*���J|I��F�� =4E�HY���R�(����B"�_2�O��q#������d�8��+{9�Γ�!m��(3Y3Ԟ������Y��j͎���X:��p?��`;�c� +����ć��t�لS�#�:��܍�����K@+-P Q���T.�)8X����9�Gd�������T�l�xӟ�`���c�m-R�F��2|$��ߴ�t�W�w���1K�%Ӈe$��?�ھ��Y��r�G��ίB��d��y���4w��G�t�����,e:%N�+��l�yo�tNdO��+�2>�t���n���tB��=���+�/�/�|�Z9�"�Q���D��Y�<s�k��&o.i��n<ߤ�����X�q�z���x�ok醇�� ��_��Z7�OS� �xVy?�h��bB���EreG�A��i�ڡ"���t9?���k>+�=��>G=2�\���vG&�Oʵ�$y� �f���u����ew��s�)ā���<Fy�;"y!W�.�Y����Ud�]�wZZW#G�,���{���K������:���<���q�V�E"�O1|&���41T���X�ݶ{&���g�d�v���t S�p��V��9�V1O��eoƊH=�YEl�*��V�<s� ��0A-�EH:��rƫ���z8���弥���t�L�HW_�`����&$��]��7�#9Vt",�ZVi�2����� +n�<�˫O�4�y!l�]����Vn���<�NL��9%���oڰ��k���e����A*3_��ʻd<�S�u����@T�a��v������'��ģ%zU�R3�����*��tH� G��U���̂UNi���� �xk��B�xv��1*�Lj�����"��r5)�L��,�>"i��|�BSq�k䯊�C���_%H�hRx�~�ҡ�Ni�SD��iqQճj�H{�v�?��R�'�Y�v�A�e\E=!��y&�)1x`QJ̥�d�� +m�~bu�&�Y>�įL��x�?��?ř�^�ef�o�T-c�{99��*�}FP3�-��.*�JN�.�����;*�Pp��|�'���GJ1�qm�������q҈���M}����0Z���7���/wS߈�m{#�t<wG��4�]<�g[]�#�����ɋ��L���T�졢dN����3�i +��� �o3�οW��P����8�L�4����/.�� r�&}��r�r���]�Ddr$�e�rBl>����բ�� ws%r�F�"| u�A4� +aT��wf�CS ����G �-�� +��Ptd��#�l(�P*1\S�n�; �,��^6��r�D���WD�:B1�r4i2��%�k�L&'�e�LpF��!��AN�/�;P� d��l�J{�,���,U�:\��p8� ��l2�"��������u�ԧ� ��/;�F�������tk�To̶��-5���훮k� �P]���E�����]��,7vW��|��&�7��;�3l�BSc��C7u���E���W.�O�t�ז>�#P+���b������)#N��Υ�ܜ#a� ^�3����ӓ���#w'U��Eb9���}.�l�3q����Y�b�o� ?�{�D��a�8��9�n��ZÚ!�ex�Y7��g��/Ct�25[��9µs�1+��|��x13����ݸ�έPD�\ɷq�6����m�./���N��Fi�Fɀ�0/�r�EF��]���5L�xh�K�p �d��4�mE5>��M���4o� +<�z�L���W*Z�>cƙIp&�+Q�t+by�!l��]9l%cP1մ�(���L������*yԧ6�XHIv}f�z�I"�E|�S������Ew1Mi�����V����i"�L%��]�3����^9�+$LYBē��%~G����� c���.כϐ1�~�6t����eu����3Ziٌ��̡^�\a��b�#�0���f�ag�Rz2{� u�ͭ�:���$�!���n�� ����OZ���C1�?���7�ס���|�����m�S��5�|��P��l�����7��]�>�vч��~b���r9��L����F:�%ܶ���+��g�o�c87#�=s7�Rw�e�]y?B�h���czS�Z�������Ҽv��W���&C�����Q�����w�2qz��+�+v��:�=Ό�ܚr���|����",3%-�z?��}�GC���|��5Yߝ{�5�q��@����K�UT��n�a5k�9ư�$ȏ"B���� u��/6����'!�w��l\c}�HY��/�8ZϣG��kE���²r=�f���o&\��#��@+�_o7�����4���CB �߰�v)�g�Z������<\�q������59��*B�u�z*~�Ό��X��`1y<�Ƞ�2z��}E©�^=#�m�zF�Xi�F�!Z�s��&,~���Sj����kɲ�ѵ �7��y��kl��Dz`�y�S�`c:��%��������'���- l��I������J����S^gI�y%�1Z�i�&o�������ґd�nbfRb�\J�&���\��������Ю���8ԝ���������U�QS��{��P&n�ϣI��Xe��F�B��=�7Nטsf��U3ŧ'�o?�? ��LI�4n�I�=��p��I6�{λ488q_�V�ީ��Ϙ�W��x�d�PK����.���n�n�W������O]�D<�$�'�W>_75Hc��H�0�xc�D�Wa��+Aj�~�Զ�W\xGJ���'�@����q���_[iX���p��r' +���������ܣB������^��:�ߤxH��XS�ݪ���& ��������ez4�+\� ���;]C� +�3\��y2�]�m�d +���O-#w�t�I���c�_�}��J섈�mnY��ԙ��.�FA���î�SV��C��k���b�$�{�c�T ��,0��'�R��d���kU�Ң'�FE +�-]A��yA�ߺ�X���G�\����KBU{$Oa�� + +Z�z�� +�N!?~���Q}��@���2���̖:����0�]W����6,>s���=��&��J�iQ�7KYO�أ �OJ�W�;��/�[�� (IGk��t/���*"�P��s����`��I��i����~��[�-�AeID���L�)f��j�%�uszo�X��1������ҽyF��5�'��(l��k��`�bϕƜ+m'_�|����Y7$�N�J='���(Ld �fyl1DX[v�y��7& +/���Dߢ�6z�F�U< w���į7� +���;(~����5>M���i�S����}ʅ�.u�������-��k�.EzZ�h4-9mx�Bs��g��64�Ӛ���i ۛ�}%��O܇�q��=�}�O�7��Hqߊ϶��/�h��AC����;RP�o�3�g�C�#�}<�C���ؕȉ�L�f��1�C�����aE*tD0�kJ��B{=�Lb ��!6��RY��)����Ʒ�)�x��Oأ-��)�i�:���$a/�S3w��c���\�g����v�C��eԱ�B�uZ��1�U=����TV�@Mx [�m��W6�,�� af�M[ A&�F�q)�@k؋���3��(�%�sn�cP���BtmO�+eah���y���`�����w���"��3/���ׯe[W&�R�� EPqZ�.�aҥiA�v�$ ���s���U�(�$Ѩ`����i�sկ���=���F�c�e_Q���9}R;�]���ބ�N�{ �`v��FU����ھ/��4b2�s�q�e���mJU����{+���d_���+6�����=�p�Y�v�+�3B�+ܚl���Z���(���8�fb[Um��]�0ឯ��s��&m 98Ε�ϴ�\,�On#7�2��(Ѽ(�=f������2؉�)ET���i@Y��e(R1�h#_q|d�i)K��}-���픞�/ᢋ��\�|$�NMQ+Es�l�>�<��o��϶[�l�\���zp��ﲶfVE�z�Y������d||���$�)L���ؐ{��5��j�JH�ka�*ԓ�Z��a� �7�w�_oAl�s�a�Upϼ�jw���6+6���N��Py��$�'�Q���l��o���>E��Z=C���u���@�����ޟ S�D��i%Vx-�kO���h'H�^�[�5�\��>�;y(S���]�� +��k��\Fc�ȗو�{?[� +-�M���{Z��{T�i��4T�f�G�Ɓ����xTC_J�-��QY���-0Fa�Gp6��#{q`�p���B]�ɀ��vAV�q Z>��F��^��1kPy���� -1�]�Ƀ9����u)��1�kO\{��Z�d�Dk��ٙ�(I͈18P1P~�Vv6^�$a6���������`��e[�-lY��>��3�~tf���*�qA�-lY���R�6z˕!���'����#�-�+<�6�{����`�������b�.�&�|z�[���͙Al���_�� �^�xJl�V�;C�Έ-� �P�ؒҋ�ñX4�M�u��m��J���l�L�l�:+�MGZ +'��[#�p #�d�%E�-|ƀL�S�ϑ- �X��*��-���&Ij�@6ڃ�i�&���$o���F��d�pa�F]bb�1�׀`6_=�����t�`6�c6ge6�����o�4V�#�d���`6��c�����F� +�d�yΎ2uud{�����r��8���w>d3����Ͻ���O�Gwb�9�ynM�gd�2dې-�l�!�o��u�ٞ�Jꃲ%�A9��h�2��O8���*��I`��߷9o�#�C��� ���KVH^�B؞�z��@:J��̧�R�<bR�s�f�к���\�e�V��c˵�b��A�+e2��٬��K��?z�S5�szR��.Xn�5o��g���')�B==����oz�\��WR����nz��< ���9k�4�Vy�CW�p8�B������T��1 M +tA����1�{�Sr,�dKa�^V�g*eV�t�$˒�,8�-�*N'�N�9[�1��4��J�t��o5���[������8�7Yʶ�m�?��c��QJ$f(���� +wM�ƜL)�t�*����gTxC2PcQ"%f�r@�0�Ud����?�ۨ-�K�O"�rG�r�M�:�Sl����($�v�pM�������N���'��K��.�"�@eFM�����>����9�X�ڠ�9T)R�L��3�ecTgZ>���4�=zhHvUR"73,�n��������N���`c���Q�!�Me�k�6�z�e�tRn7�2F#'�1�g1d!t�b�L�I��1p�.K�W��CZi i�䆩C�$�$XfJʑ`�7N�tV�y�$k�����A.ؚߊ$�@�����U�]�P1nC3˵����Xf���}/y�H�1oV�x�c���_ +���s]��CX̗i�:�nsv�T�^А0G��wΊ�VM�A����X����*$�<��s��$�^/)��������QaΏ�Tx�[�A�-�'_���*ɶ+a�"�:n���Lj��Z����x�n@�<@ �p��~k��$���s�����e��}�ß�<�jn�s��(�D +Ζr��3 ��Q��U �r,IS��G];!+��Ʃ�'Ȅ��z."����/���F���4��{�]��5:<���oj,����^z�a�8NIL����eϹ�wW����a���o \�U���c�ߪ��� `��=�Rg|nE3�;]�}^vY��Dr�j�J�f X�U���RZ�'k<崝j�v��KH��w�t=s�c�4��,mھ��u�:�k����êr�T�Y���D3�K�7a�O"�CFg�����8K_˖4B� +h7��͞M�T�s����6]�L^�9��Ue+��Ƀ��R�ŶS��,j.�ugz���j0�a� +��d�����_&6��<3��N����-�.�lO���Ib��#wxVkiž\�;� +����]�b+��Mv�g��C�s���� �bŧ -�q���L�K�����35����f�>�s����i9a�)�*P��gcW�9&�h� h������KVC�ibj����kM#dTRj<p�q��i�)hO3���S;�9�BQ��)*��v��:�~��Q{)ē���4�_G�YNHm�NW�35HE��A8{_zt�:-:+zG�y�\��\\�KI3Q>�qya����V�����&��xw���|�s�,�(�=u�0�M��W3�;�^8�>��Q���#��uh KJ̥�(\\t�A6ה�G��jM��qOEd|��l�5�6��k*��<�k������F�lk���$����l��ڲ:��t�x�5�� a�ߺ�}���ѴJ��(��k�nTn�=��I� �/+*�� -�=b8-iHfٖ���t*/qňsQVҞ�4�R_�ƽL@֭s:� ӕ!�k�X�%�YqX��p��;ŀ���J�C��͡"�ǫ�l��hq� +�Mb��pt�M:83�c +�i��$_��2Q~���-ML������~�x�a� ��b�LM���c�D�C�K�"/�b!2��p�I��X� +e�a/M;�ˀ�W���g&d��5�O�3��:8��뢆g̊&{'�"��83]7�S:�U�j��+��#Z��`����pf��UZ}���E6e�D�U�g��R�3�����hopf����=���)�[ A3O}��Ī��]��J̰ ��P�+X]�w��zγ�w(��Y1�4؍��ڢ���#,�}��~�����Y^y �T|���1V~$�|c �+}�]��~�s�|�$�6;�A��o�DLZ7��ƣ��kBVD���}�1{+Nk��y���Z�� �.�<� aƄR����|(�Š�4�6 +�{�+��UiT�����]'��i��'7�A���m��:�ۣV�4q�I3�ީ�V��W};P��g��Q����yds�2 �jk�9��8�nY�z�A/�q��Eq�1�B�O�h2�`�o�y�P�]m`���[x�E{�`�1-тv�����y�*�lף_p���~���[�p�O��{F�֮��L�n�p���;OCKW�(�io'�I]�����T�9 Sĥ�@�f���m`�cb����F��gZ��� ��w���aV�S[�t��ɻ��������h��CcIn���g!j��P�"��D�W?N|���V���g��|m6q�U��P�Sђ�y��'�Q���҂k��k����W��3*��$� E��j��jlj�6����u���/���*x�5�u����l�������}��<�qR��KQ.��`xcO���Ӡ�Pe�E���<�ز6?;�����,���fB"t�j=�kb����i�W�k��B��Q �5,��`��H�Ǥ�V!�x����S����R?���W����@��)�o��.��N����)���Y����P�����N�:e��ʘ�|�`��9qd�U[l6�W���i`*���ԛ��戫��W���P��~Ul�S�tS��^�t�9:�2��[Zާ����zlEY ���W�n�k�G7��n�\��>�^%��B�ٛ���EG��K�2��gP���6X��T�%Rl�^/KX&����=�<$��sg���G��?Ў� +_,�V�� e�� u bhqu��'� ��M����A��8 ]�kVl��D��Y�Ǯ�DCC����� 5�������ٕ�Y�����;>���f��"����cXm��.��J!_(U얡EN��\c��.<x����� vyִ�_��V紋��~�q����߫ SGy��~�<�C�� +���Rww!s�����jɲ�'�%���WE�����b�_��-�]��� +�m��v969���Q�r�ZB�5�ؠ��lGU�T������Z�mB��A�oA�����$ ��q8�Rt������ۍ�8�t��1���]?K��s�5q�9m�ɃΩ��}��5��,P<�JT|�hC���L�@�1߰��g�<��������+�5ۦ����������wd�\3�'ڝ8= �%d�;i��m�W>a�����I������5G_Ը���C�E'��I*�K�\@��d�9���8T����M Ҩ���\p#�o���Z���o�BU���m��,���j.uɶ�pTH��=���q\�(+�Sw{���k^���g�����ߩ�:�,D�dؽܒ�k>��pQ $G3.k:X����zҚ�x�!pT흺m��a�]'���FR)Ӕ�%���W��Š�cغ��]�o�I�h���LG��&�s�C#q�~$�Mw�qud���*'�s�Q�t�ml��R�_V?rW$S=M�Uxpp�ӮÏ�c�5�(☀a�a�yɊ��F��� ����b�F�*eG�� +p4ϳ,����$���]%G0x>O6����`�W��[��!ּ�@�(�Ȟy�7�~b���������MhjzϷ��z� ��D��v����R����ƻ�y��D���#����{Vh2�����β+��OCj�n;�g�u�)�<{�^�`�[y�3e�LB�_��܌~OCE�g��T�##�r�T�<5G H���%�`}&�y�x���w�j����@�j�@���ē���M��{���널�����/A��4� A��CL^���z��QZn���51C&�T�T�]�`� �<k��IT]c��z�c�Y�d�j^�,��F���X�+?�`��b�\Lif�MK+i����=�>��<;MkP��9Zݗv�1Lu#*N^��\��w�9�5��@i�\˺��9��+�Dk�0��~ 5s�]Ʊ�qt���y0���rTͪ����E�1]���j�e�EE<'�\s���� 8wJ���li)2��؟��p�yr���`!�p�w�����Y P�f��94_�jbbEwfM��X ��e"8t�S�` �2�8_DW_vܣ��˾�P_���x��:|�揍��<:�u��;kz�A�5��kUm��xƵ]y�i����|�"Ӷ/����`]�ē�$�^� �����%�?��O*N������#S�n�.���v�9n ���f�X�fl��=�n�rnha�7���2��ܾY��#�\r�Si^��Il`K�sFI����F�Ks��SX���:��RV��ԙ@��u}ɨ�_ +��vR�@-�C�(^�1��]N݂w��?�Aj%���B��}� M�E-f;ajˤ=b���f!'[��?c،�"u1|ך^*o��o��!���V�u?�l��n���s'�1_�-�˝������仾9q �"+�' �����We�`Zrn@��s�����NX��[��o�[P�����U�ʼ�`��[�T�Aa��Vr�2:��"S�iؖ�:�jC5�{�=�}�L#-��&Ř�Ɏg��p�[�'���7.1� + ����`$`@۾c�����pr5�<����}W<�Z��X#iH���|�!��JwB�b���>��W���3JU���R��-tFA�i�XK3�d��l�( w��3�{6���`�OB��36��{lr����L{I����E�a�������[�+79�?D�����.6��C������6���;�|�k��`F���M�fk��W�� P?pU�X�o�#O�l��m@{��$���P�oY�b�4�[$Į��n�E;V�'�:R�r��"��i��S�k���Xꁸo ����`��d��%�;�Ҋ!V�>H���%e5��բ��;�HT_P�LO�h��K�q9��܁�6�&= +����P��d'b��겆�c�Kd�cܙ�4�L��Y�ݎ����=��BE��wG��̌��@��z��=k�{�C�4�$�8���:x=lh:�(d� �S̠\C��5���+Q)�d�z�7 4"����xȭ����B7��[j9U�����U�4�tD�n���%��2'��Y�����A����,~��{�M������x7e����~N���h��GL�Ef \?�oWlθ�E�no˂�P��-i4>d��G+��~(�����ǡb�m��-)�9FfثgPm���@#]�%$��9�rᥭ24(~�� �f`��j�=�u���� ,o���Ls��gwlkj��S�ԙ6A������Fm�9�X��Ͻ��QB���*���y�:�-y +�h�}P~��}�eb5����S Y�� T33� ������$��|f��^� ���H��d�w[kD3����Ug�� +�s�:�O�k�����͡�h.�����uV�����NT��7ё�\�ƈf\�@)�t�r�4�Fr!��j�H ����X�!������C6��,��V�~�<���JTK@��"��f8F�4lȇ���,9a�jN/Z��#��9�Hsॴ�M����9hw�<'rݿ���}�7�x��-��րMm�9�d�_�a�<�^e��ٵ�B�����&��s�r���3� �%��E�� +Vi��J�ήlA����!�서�kz �iqAn- +��'���Ј��iU����K�����h#-�\���a���s�z���pN�Pe�=.? A4[�U'�<ޅNf}ޤ�2�T^��sp�7ޞ�'gm�I�����hݤ�������[�:(x���g�$M�;�L���;�������$Qwlo{���o|/�!�4�nJ�]_����?sP�۳�Xm^�f~!��f�_�6�Bc���4�Z���j��IR����@��ކIF:R��bA6s�śI����\U~v�b>f��T��:f?(�rc�2�Be90L��5՛�7ln������}֘Ġ�m��E�e�ڝ�-��N�Mf�r�@�4\������Ж� ���NP�$&��>K�cӵG��S�5��<��������ʷD�_�vA@W��g +��c�����Q����v/,�T�'n���ӌ�����ҥ�����Zf.��{L��XQc3a��/p +�ˢ&�KP��7���qo�+!�Pǀ*�VOU�%��б�� +B�^0��CI��r�jVBm��m��q�`?$J:�ޞ����$�j?�����bu>�8m=�)�ޓ� +�x��&}���[ԇ;������J �[s�O\h0�|b�˧XA���X<q���_�F�Ly&D�P[_*�(jf�6����Q\�3~2��KK�`�75�EH�� M�Zw�<���]�9���li6��}��љ�X�N��E�>Rn�'�3�7i�� Ȑ��}�#$v��h��ϝsv���e�\����Ȳ$�a�>�\�~��<�������X^u_RI ���|��dZÀ��[�����p�}������:�U�k�9�p��R�p�SƋ!��J�� � )��"Yx�䀦�pR�"OI�D�T�@����l��P������y� �&������V�0��~M�&��1u�G:����}.��g- �{ɲ�� M�C_��$l} 6�����M�S��l�ߙ��)a�SЧ�n����p+��Ic����3��4B�xӯm��������37�����5`���=c�\vRP�q����Ǻ������)T����]�K�6厵�K�'7�t�r���6����Уex�pP���E� +�"�?��,-�g��`f��>�����\ugf��Z�U�b���;�h<�A�,ݘ���ޠ�WK��<|����g�G?Z55��������*�"&h��{�p�g��@�Y4�ۢ����Y�L���Y���.G�u\d5y����L)���`�/�A�i�2m���̽1�����2����i�SC���J�0��ͲEi~#H���j��;���v�3QsG�p5�����O$�.�?R:��w�h�LM��0%H`�US����~>�a�BM#�win�t�ʒ����TDe�vW����X���*��3��\ #W����>��6�Mv���=Pҕ!�~��O�&�-��0I�,d3G�\��)Ӻ6�Ż���6i�����|��ك���˴Mu�����K'<Q��5��U�'O���L9�5��$oPJlR�U�b欤�Y;�oل��fU���S�bG������]\�k��G:9�O�| #l��l�&�5����6mE�Y��H���9*�����=3��������` �M�(KV���6a=�6�i➚��9��;W��#�%b�t� @��8�wM)7��I^7�E +sX��Q$[��`��o�"D�K���z�S�����.*�c^o��!���x��P`2`DEt�7앶B����j�D*Ϲ��,��u�O��Q��րW�M ��Ϗ�<�쓓_뛆U2r��g�d�?����W������t +�ٞ�/��m~�@���}�16!��K�כ�1<�y�m_�Pw�q�?I����x:9����^/Ak�E��4�jw��+���ns`C��������y($+2r�rh"�-#�~M�a�_�|`q F�Vu�KcO���h����f����3^5�-�����{��F�@�Uӊ��8�������c��Si��NS)��N^�0�k�PX�$7�S+�N�k�3J��$� +�\{�2z�mEK��b@Es����IU1�$� +�Z�pS��k�k��zp��T)���2"XP/����䶰AmCw<���q�N(�5[?!L�V�%T��>�W� Q�PQS�����Z��$m��rAu�� =�����\Z!~�fK�5ΐ�����*��]-6S5��d���:@K�7��:�� ]T��'���]ô�V2�/�s +��c�����:L�����)�ZӴ�B +E�Z�L��l3l�l�lH�_�D�ك.��%p��EE�-bu`�ʙ�5 +@n�����A�� +�Xo��\J�ҋ���.��|Og�'u����u�����B`��h?�c�M�|��$-�3R��]����'El��yAYG��m�e6 �P%�)#��҃XNRo^�8L�%��<�-��<����D�D���'�_�WZ>���(��'���c��9���I���C�3HgDN���3S + ����\� Q�U��N&0�r��5��)�� TF�4�Z�U��z�l�'�7FU���v^�A�h������2��Gd� 0|0<�G����֝���)VwaXwb�F�˵�V�=H��t�������&��f|���<��(�f� +�.7���լ���J��Ŕ����$bq�YI��e�ɘ�N5�8���lm�����Ú����N��n3>t����I�!+����0��$d�7MA2����zu��"��StC�6�+��9���\���T�-L��\n��ee`�(��>�^����|�4�.G��˶�ymsX�6���V��� +I:b���W�-�#�h��Q�so&�%L��:�݄���x�U�~�MsԠ�c+=Իl�`�Y,/؝^�;ӧ�����F~?+�EaO�V�A0����� +��OA����J��zy����#�ws��&ֲW�zuI�քJ��!����L �8T��i+�)�֧�v��w9: ���PC�OI'�J��32���IH���M��I7TphGB;f#í��g�>@\`�Z7Q����a�ה��<�J���G�����z�,ö:Kv�$��}�L����{j�܁{���l�C�[K�T�݇\��;�L����G���~��hʌ�c��^p�NLM�5-�tXIU��m������v��$L� �� ��^�c>i�$�������/�C���z����8:��&��#�<�ym䙚�n[#�^eq,i��q�����u�B��Wע�p�I+��r�D:Z�{��P�;,<Uo�nG�|�vJ�{j��m۟>��ޝV@�]rIN����;d�ֶze恄�'�Hty���/�aZ43�c 6��&D�Yب�;���D�^8��3����_�֬�-ςJ�VU��D�"(]c�I���`���L���A�,I�}|�ٮmpD��8T�U� �f6wXz� +K� ��3[LR�WX��������R����ܴ�����;����L +�pBc�����.�?Nv��d���5����5:����ᦦ���Y:�4Tǿ���[x��̣��֟�h_ixe�ɀ� ��A�s��Q;��l�ُj��)%f���,��C���#](�Lp�ކ�%y4L������ɤ�a������j/3�@�m5�Gu��X��@��U�=�k��YƬ�����v��O���'�NRWO��`0 �"P�|Wy�ʇ���������-�d��2�1"��ߗD�$!<��){�XQ�nKݨ?�Z^QQ0Ӽe� lY' ��'���_PI�^K�A?X�ػ��U��#sS -[���\�B�o#=>�2j�����;BP�T�HCo@wI���8�Hat;�A��{�&�{!*�2O���ƫ��@�8�GC`�ڄ�r�nf̪wiCť]u����V��Ry}-+߄�2�p^P�̎J;tE��Eg&��Q�<��3�ae�[����3�{~\��y��l���Q��?fx�Z�e2��׳�:Jy�����|=mH3l'�w�5��R�dȪ��r2��<^�w�|������+��7O�D���2gU�7UJ��q��+�W{q%�P��WF��2���͆�-�]�2���Ð<���c>+A��B�3�����eC��8�� +ⴟc�v���"R{�����!7�Ӆ�sJ�~��z�aP�B�<|�4��}'�̾^� #� +"��U�L��x�i��x���މ�d&ݯpM��qө �<@�Oo�"����Yr�ISf��ũZ���U�ͪ����y�q�*�j�X�^̪��:oj�dsy��zq�G�_�z-��z/DU]�9�9���Vս�����z�9��.��n��v +LU,͍���Q�Kc���^f0�knՏ�~�o��o��g+?d�{�����7��Cg!'|z�3��}�;��s�����<��Yp�Y��T�}G����"�����@�;� +퓕�JD��)=�y��� .�YN�3�H���g�d��X���PH��H��'DI����k�YvAA�J����:�/�һ�$���@��v�x9�/�I��6(5�Ć��h��x>ЂiZ���m�v�L��^�����x��T�r��m�F��AB��1�.tTf�!<@"��ȟ������|���������{�����'A���_���ˡ� +=�Er��Hp٤A�-�U�y:����� +aQ�(<��ؒ��W-��=s�b0�|tIC8K�։��w6���u<A&����F�*몆�I3�6�Y����o+R�6�� ��s��1mߪ�5^�C��&�d��ڙ�4��QB+�fT�0��"'b<����N:U���� +�T���IA��Aޢ�����k�:'<�c���0�*�^:�]����bB�u%Z C(,[��zJ���e➬��CONvk$[s��S[Y�F���J�.�;Ħ�q��PCc\R4�n��R]��`���PH���R.F}�-�3������k�q!�n�!��I�NF5=���R����J���1��;HS0�s��V.���h�5hR����ob�?�n%�Ju8���@Q�j[p�� +��{��Q~$��[tC`�"s��-���C�h�$��P�z�h�0<��"���(�*~ +,����b�p�CeL�n�bHkAt�t<!T���=�bݟ��ot+Ŕ���CNu#�JH<�q8 ګ���fI5Q^��b��_����Vk�0�MV��#4�E1����ދ2�<���ד��������[���0f�9Dp�WHP�K����]��B��?���Г�E��K��%���D���mrH�W+���(���Q��B��U���֨N�v����hw.E�SY����\�W�W"T�e@��H#$ � j+��d?9^�hÊ�TH2d�)]A`�Qlf��<*e�WV��ե�l��aR]j +�^^���JP}�|�^����Eɬ���(o�����������y�x�#�x�}Q�dm���KYݞX�څ��Wɢ�Ns\��5�8��*�Y�:�V *YgK2�ni��o]��#j��V��-�+6�]Kh���FA�y�tX����t)n�mQ�:�j�P@*�� v���yA�Ybѯ���!������[x�� ����2�"f����-�Kq���ծ�T& +N5��u5�K��,��{|N�2�h'd���3���,��tԓ���S� W�L!A��Ө�xi��e�Z�}1��-�Zru0��نW �|t;��m<�%W�1�H��RL8Xc�i���% ֽɲ�4� 1�4�Ms���H c��I2 +-Y�B�QNJu"� ��M^Ӳ�S�4��So\�Q2��>EC@,t�y��B�Ņ��<"+�1Ƅ�V(<VE���:[�����(ף}Dg���brDt���*�0�Ha�� +�L���*����]���Cu)�d&��h ΐ c�wW]�V>§��ځ��~>9��hЧs�4��DT��z#0��+ >fW�Rx�~bl.���F,30#] 9Y�����w���}m<t�Ac��!P� �%�/�4���_B�{hA��<����mQ��o� Fv%�pؐ� +ub�u�,1� +�֚���v���6WI.f�ϩz�[���̗���bZ���n�,TBwWb�6�m��,_�f"�Ѱ�)1��i����G��pI��3��eH��Ah��L�hU���O9�陸|�w�۴G�����ܺ�x�C��&5�j��&7=Y[E�%qtd�-3��_�Ū!�#]���J7:�q���gTc�dTCLht��m)��o*��Cb{��kڳx����Лj�x^�e��#�e�UC>�%��d����:�v�UᎊϮ"D�'5�cGQ�q +�a8������q�4���64D�>-^�f~���~1ws��9���i<*�G�IW��|�q0X�V�x���L���8F��8�s���Z;�8�/]�F��O�n"��@(���%��1Q�|��&�F� e��!�|�Q�bԉ& ��F_��<xn~����f�OT��oS�ا� +f���̴K0�Q����de}ӯ�<����c������:k�q��~D��yQ���.s�Jv�^�7��i���N:�I��~P�#��T*��(�F��t�"����@�L�G8ԯ��<V9$��[(�}�ϕ�H0sV��Jߵ����!�_6�8Ǻ�S�������U�6�:�,ۭo���w���SD ݖIA����u��C��EK!ԢJ���2(Z�7����2�@5�6L^��{��^�eNG���~cz��S��B�;�jB���PYK�x���g�C/O嘌�ll%�"�ol�%�)o����U=z輇�H��W���$���Y��q+����b�x�y�<u{=B�=��A���|�I*(�y��+h��i�4��}EoS�vR&}��D�F��8�ND��$!_���߾Z��a_C���RX����-x� �:����c����Cx)���}1��Y�<g�}T{�;ֲ�l�+����sjH�0,���/�����R�_�4�4�m�K��|���C��!/�����I�P���H���X�t�6lQ Ԗ�)��j�%����k-BCV����}��+�D���8� �`崵r�C�`q�|���:@7���Ѣ����5Yu�R�|��ޖ#>�n�0�O{ѱR���l?��Ya�2�-R�%y0��]�+}���35\����ᏆP�_��w�n�� +B�`�� �\�Z������$� +M��Rl}ߪ�O����C(��w`�BQ�U5��?L���qY��2���n�4q�����[�t}C֜=%�D�ї�ZV��UQ�$ψ�R=���"�`s�4���z1���]]���z Ke����鞟n�dF���aW�r���ɏLM/v\a$,]�A$ +7��jp������bx휙:D�ִ�i�g�k(�d�r�b�e�x�\�[̖[��SJ�I'��鍯��)Y��?(ɴG=u؏P�;��!�Gg>R��a3\cd�Y{a�i���T��c�3g��Wi�a ٿ]����\ʰ��CVL���T�ad����2H9�'c�����n��M��V �i,.�}�S7��f��u*JM�*ݨ�7���+�����@J���w2,�4�j(qlޣ����mA.O��cF�I1W�a�CzdX(�m?�����%s���R�X5��c%G���q&@n$����A�K���$��o��R] ��6�FCxCjv�0�J�(�;�]�B+�I���-Aڌ�R��Z��VS*�������%W�@��\Z����e(�r<k�������\R\�^m�Fr�{��?0�2�i2[k�������-��'$·����l��(��sĦ�ȉ�|$�H�7�V�t�I,��ۘL,S�S`u�N�T�����kB����t����ӗO7�cp��b�M���Y��� ��iJ;k���Q2��RU����$P&���i_�֕�l�o㨙#�ޤ��Y������,��V �=���X~<ɭ�J�wo�٥N�>̇�T�����,g�e6����R�!i��m��ɴ����� 4V���'eF���&B�Z�jQ~Z��Ow�7��.�L�<��Y_V��0�YϷ�˧���4�ߖ��ޭ��W�X��)h.�>����#�D6���������k=aT]&a����6�Ȱ��Q�-q�Ʀ�éA�ɬp�E�?��|'0��<��q&N6_�^Z�%?�������lj�R��7p�8\ +� "9�v[O�/z��&�pWb��z5ʆJ��B�O�v�i����s�Q��wR� ו�V1�\ ��5L�������25�ܨu_�>0����^�7gs�!cy��&D�`6ᐊ �vB8�=i�����.!T�p�lY��|Ye>�+���x����oQ?�?P��Y2���$3��:���� +�������Ĥ3�@�]��<^�E�H+ö⪅�3~��Y��ڥ��Dp��SF{2U�j�l�s? �4Rx�I��n����2^�4����9��GM��|\[��ᅢ���M����J��bw�m2��^3RKBU�Yg>P6�����4O=�����!�Ĭ���>^��_��G�6o������ň�i�0DZc�-������V�)��f(�qs��ݛ�3eI�D��#Q�A.�]]Pc���l�D����wu8��-�b���a�}��)d�LJ0���n�⠐� +U +��G��8�i$d7G{?�Z+��J�d��\�?_ ϯ�)j�J V E�c1�/0�Ͱϥ�V��#�"{2z��E��%�v�}�"��&~X�a�K���]�"��A� +���wӼ���8ʦ~�`��.����N>Z�{v�����"�n��#cE��Si|�u��*;-h�����͚�g�@�@���9h'��W�E�{��Y�c���}���˵�_-�b�x�p�d��Ce�+��X�S�����'o9�1�]u��mz�M��B������lz(��aY쩀���=�z��(�`+��5��H���5.��p�Vy�טZ&�qgF���'�Is����Nw��(��Y�u�z��e�`�x���g�s"����j�a6 %�\�U|˓�`<٨L`�|2Fᠹ��/��r4��R*P�K����n�&�B��Ba�O�I�͕����;��Ѕ���&����=�C���] +��Z�9� ���zAt�0�E���+a�D��[ ��5/LvR�*!^.K'��k����0��4��������;ySuB!U�"�>��[�^}c@�,LN��FxHm� ��Z�e�Kn��r��1!���ߢZ�zaex�_y���H."�͚�~���j6����5��Wn����w(��U�ӟ����s]&Wv�:�+ +%`�#�6^�p����yj��q� �P�b�j��G{��:�� ��(f����J���M�{���6� �Y��*ʀ#���g�N[R�w{=v����,��˫��Q��W5!5~~;˯��i9�=Ӏ^˹�$[��p�E�s�R�Y�G�U��3LH�E9��?1�,�P}�*&�l/��:�ԭ.R��9��������^��\�7� +�MG�篃y�ϸ� ��L|I���!CV6��$��Z�o�i|��������.g3�η��r�^ ��#��˴V%���?k^��h$��[v�Z�k�۴��,�CJ��3M2����PzY!}�`\�iu�8���]2��1$���K�TMS�Y{�c��Y-a��T� +�v��@v����h���o���v��c�H!뱞&'}���w8E�X�1�߷�ʪy1��`i��t�tJ��o{�V���,U;�c��U���34�� �1V<�Pޠd���P��֙��v:����2�����?N+��|WK��"V~���Ť���m@d~§l��uyM��A4Ɠ�g��������[+�*�y�q�{���[}c�0-_[����RK���ϣ�n}l��&��"�x���� ��ʤv͒��m���g���}���h�F��x��y�a���7��"�M����0�;Am��ڧ:e���.T"l2�w�&c���lU��ho�ʧ�cۊ����:��T�Y�X�4{H(,C��d-�l��F��:� p9:v��A�����lg��S�]�5���}��_������[�.�"�>����#���ۢ +� �鎣L!��k�!�X�]�<{�]O�dz�=`�i�0�u�q����9�ֈ�dT4�[S�ҧ�Z�<��ni�e�GԖ�u���L�� ���kū1ެt���w�a��A�1���&�eݽ�>*)��]4��������ʬ�oԤ��«z-pmV�ȇȶ'�#W鬷)qW����<���,�����`��p���":ڬ ��*�����{J"���9N1�/Qp�!V����İ4H��F䉺�*4=�SQ�� ��kMq��x�_|�^x�=���EMh$f�>��\�����R_���<�]��b`��jT��-�wjE +c�A���2��:�+�W�&���Sp���k��u&�U)m�Ni��j����>wh/�÷�������LJ[��{��Y|uI���I��g�d�sI�?�z ���� +����lht$Q��'�����Ըj(���3��4��*�TӦ��WF7rY>��1��n4�B}g��1j���������p��-)s23�! �~����ɬr��IAw:1�b�"�a��W��Es5�hQ%���:pr}:�j�c3�������_�[fi.M����#��O�t�Z� �����}�^��pkU�6��+�����Al ��mU2����)�o^�[����!LG#}s�(�_�k��T���˚�g�|�����ӄ-�̾�$��x~�t�s^v���`��4�o!�)h�/�� }�yf�r�x��_�>פB���f�rQf|%��D�R�H�����LY���n{�����'��<.��n���6���XA)��Q�\� �����?n �[��/mM����B�~��aQ"�~�F�}������c�8FU��I?��/�y�� +o�V�� e�^�)]���MR��S��3�"�{7ʓI췕F�����C��q�gf�b�p��Ѻ0\�U���q�~9L)���s���X K�W�i>�W�|F?�����q��i��凉�xF��UP� �i��j/ä8�U1�u�R�8Mb?��1���c@��@��?X�W_�*F��]&}}E���Hl�O��H�~;����)/4��{�6�2M�, �6��gz4�J�f��l�*�ˠ*<[Rg oT�!���������P�$��g� ��^m�;m)����`ix�2gSSvA��$�R�u�� +;L xw����F� �o�j~��8uD]u,��2sT�N�Uܵ}�J�|/�/Md�ǟ��[uT��R��6V��K�u����jԆ����<2�'��^d4P�j�4E j?�VE�cط6���`�ϡ?��&���U��;5�j��--�(G��N�E�.�:��X��{ヨ�h��V(��H��h5�q���MQT�4\"���К�N�"�=���|���� "g5rU���>T���,������5E�j+�]u�5Z#\�;몶vh�r�G����AS�u�zٱ�C��.�S��~$���k���aN$GM���Cf�5{Zړå�( �JY0���NX���,�)I߆���K��HG���8���w&�#~~�t%$vH�[^��T���%��6�=5 +W�t�Xz�<����zӋ,�Xy�o��N�5��D��X��Rh��&�2����{����n��/2`�|�$vb��e�%���[�4�C��n^�6!u��&�Qt�� +��V5{�T�������C�kNܨ*o���D�g7,�Q2{Y��=���������q:�R7������;-(5�4#�"�Yl$bz�����N����h���H�����Р�m�O�Z(�{�G ����J{��&��-�m� ��* ����4�2�4��E��V�V��|$������Q��Y�Y;}��# �&��C��t��x^��D� +CI^|�>`_��0 (@�FB�أn�zhr4)���.o$;�-��\�l���z�������<��@���}�]��}��S��.�ҩ������+դ�h�.����.�@)����1�+�!�h �WV�n� ܙ����@�n����A�Zb�y;���pX���P��%vN��Vl��������;g���n���1��8������n���K3$��T����N1�mϸT�F��@�B A��SP�&r�Hb��ע [Aj�"Z];��3ƫja�pfl��>nA�4�z����c'�L���auR\̈́��s�2�$r��0QDj ��h�-�"��@SN���}�`W|��t��F�D�}��6ӱ�lCC*j���2�'�m�ywȲzTԮ�=��]�qZ^�&y�|����e]'��)���T���M�GQ��R0�N��m�]u��6�~�� +��~VU�r7����O��{E噄������j|5�x��g�̬Y�gJa�Ap���}�ӞW�����4▲o~P��>.IV;�j�xkM�����t�o:B,�A�u��w�Q2]7��h&l���OŬ�P��*���D�`Y���(�]�#�}c&�t�]6[�H�K��M��}3�M��� +�E�@����F�X#���8�p!��kehiwL�'�iw=���^�3�kC��n�M����ϋ��]�8@Q(;Z�9s�~�PQ��$﮴'�HZ8c5��Cɼ�кZ�+�x*���#����E�z���b��hE�l����4�Ho�:S����֬�FUZc��SzB-�9�w��Zy��V��#�.'Ҁ�t�'���DZw�����9�F6a���1���~'u.n��DaE�K��qᅴ�fb�W;2��<R�����m��c��3�O���^a�W�,��z�dPTA�cπ�dI�Ӹ���F�ؘ�� ��Ŕ(����C�Q���� q[+�Ў�[4�����^�Ws��Pԃ|��X���UV(�4���2{�SzJ����5�<�M9,:�A�_ax���[ky�#Q��N%N��#^����7�vqD��Bcu�=�2�/�w�E��>6���k��U��*��!"�o�/�^� +�cH�IN/������=0�y���k��^��~�[�ZG�n{>P�۲/�Ka+���=/�u�[j� ʂ��'�!3�S�\�>��Rlx�a ���t��~�Έ�vE'�٣�Y'��[D���c�F�S�loX�}ߗ h˱X�C��y��ť��i�:�`T�w�d�1��̈�����U���J�D��·߯�����*���gT,ϷүW����~�R������8��a�M���B�cɟ]3����12�����������:��)�D���֕���oyIu�C�^G�k�C}mل[N�F=�������o +<[��j:ʿ(W�z� `�.�����d2���֫�Ҙ��@J5�*��l�u�>#�گ?l�"O{b:|���cU��k��e�d��m7�1kJ�݇�r����{ +O4,�S�J�c��{�4:���N�G˓���`������2hЉ ��h!��P���j��Z�2��k'�������Q;���}hٛ~딞��W!�� $ �����#W�{߸����<B�9��_[j�o梍;x�^3�E�r^mz�P��+�9���k�EX7���j��r�4acvh�(aXϥQ_g�[ʰ�+�CB/F������x 5d�n6�Q��@>�_Emh�e1Ҁ�m����X�i�Z~�m�\y��2��vZ�s1m��!T������7��:�v(���tY�4���V�ۣ]:P��o� p�#���*�,ɟFG�D�bH^pр��_�P9*�^N���.c���70@��h��� *�_[����,���(K|S�UN����oj��]3^�f�-v�-��PK��Kݙ�)l]�c(���C��f�ˈ��ɨ����_��x����5v�r��G�SE��P�Ô,.9�>;`�(�X9�Uyn��� ͬ����k�8E� +q�q���Y�e:��bp��� +�($�4��������b�j��o�F��*�iN��kΆ�� ꋫ������S˶���=�a+���cڬ�̞:�%�=�l�Jc]0�U�*�.���� +v���e�~.1Gt�?���S�N*P�$��H,�"�v�r�Z#�+4��Nݰ�V��5�^� �[�����T~�u�%$� ��l-�=��895��FZ�c��ՄCV���� +��y}YJ��4�Z ��z[���ĈS�4�.�XIDYO��Cn�R��������ڟC�̥���5�#��CeB��zZ�7^k�sk��?u^��4h6��|���36�ue��C���}8Z5uޱ� +�ۖyh��zʖ@c����P��ZV�yC/UwQj�>��6�5Q��A�z5��?�C���Tl�HE�C������?&F��Fmԧ�.g����}���/��4פ+%&[�fһ���n4�'��Z� .�HD�s���C�*,#5 +B�h\[�Qj��]ʯi1G�*�N�d�dB�C�rӣj���1H�ʮ���p� +��L�#`�����$M(O�aG�/�GX�au��Te`y5X� ������j�K�4R��d�u���0���"D�yT���WxzB&~9�4�{y��Jf�۫���{��<�v��ΰ�X}+�u;�Ym�c,�a�o[����5&i�h�\����{JbZ~:�nt��J�n�o̠�F}��"M�a��<�CNV��Լ�1��<6Eq1���n���b�c�P��,��tn����n"�OZ�c�f=}Oɚ]���.w�8b���[Xd���6NJ#�7H����s)v�5;�"���I�fN�MC)2~�z i����氛w�q|е�<e�Bw�>w53��Ŷ�տ�ֈ�V�G=Ϲ��^W�I�^����*o�[��ϩ[�c� +�6(��J +��#��h��; +�hH�5��:Y)�������}�C��i�:�D�J�-B B$Ğ,�B���>��ڃzj��*��}-���W�0l���|�9�"�I��W�6��F��Ta�υJ%�E�D�W�ڲ�guA%�e-b��ÞƐ��@�m��2fT��6j� ��;�?���]��j�x���L�B�h7��v���,�E�ݐ��n����+TH��Lu2�(�̪|�*�:�����݊r��_D�>|����yKI���H� c�)3���U�w���<���`�n�2K�4�$�Yg�W˪�s�C9�ʒN'K/zY�I6;+�O�v;� }!ּ����t!�)CCJW���b�Ӭ +�7�;s'@8Z��D�ݮ�-�̕k�e�r�;�֕��f��]���-��ǣ����ȹ�YI@ʃ���1s�~��W�Q3�G�;vR�SNCO"C k|�a?�X� 3� ++#6���n�7�&��H]��5R¶��we;������"��Vo pzn������� +<ԢdĴ +W��4dE���Q��ȡ�{\���y@aJ�o���� ̚��[��t*:�<~;$�I4*���Ҹ(��R�O/!4s����9{�?h�0���ډߗH訧ז/CZH}��۵q����U�j�z`��t'{WM|;�T6��y�m�#�"B�Y�*}"%x�MׄX3�����) +��ӻ]P9/�R�����;S@,��"�C/��g��RfS� �ze+0eJ4_�jA4���-���2��q�������9őc�uW1���Y[�\���Tۻ �(�����8p9��d��ҋç_����v�g�-�S���s���)���2��,꿭QH��>;��~�ֱqy��L�X@���)���XY}��IUuC�y�.�fa�À���U�7�T��&,Q��;;�CL��J�)ª����u����r���t�}��t�����߾+�������TA� endstream endobj 44 0 obj <</BitsPerComponent 8/ColorSpace 45 0 R/Filter[/ASCII85Decode/FlateDecode]/Height 17/Length 335/Width 69>>stream +8;V_Y>EV>s#Xhb<(Q1"0lg9Wte*=mj;oE;_%SZp]+80K)eUqr82V.>W\QesHU!`f+ +GLT29fPkb`F8i\%HOh4Um;Z#fO6K;*^EYtA]Z24j4m.eIK8^L$P/4uT]R)E#1,9\U +]R$4*4iYsW`QaQLm&Pu/4NTOeF(+\jB[dOY\3uo&%>;]f\Y%8YBr!j/eBEc8<5^#K +`7pQ,0e#lUaXbQ[8<XH[$Yd(V7'5^mV6nK8;1^pE]O"5+k$&RQda,H>G270&B"nXM +-mk&o#AUsJZ$dcQQU+WVf34GeWi?c+b(Xj<3u.Xb-V4<bIn(--^++mV\oP^%^B"><eE>Z~> endstream endobj 45 0 obj [/Indexed/DeviceRGB 255 46 0 R] endobj 46 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1 +VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH< +PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 35 0 obj <</Intent 47 0 R/Name(Hintergrund)/Type/OCG/Usage 48 0 R>> endobj 36 0 obj <</Intent 49 0 R/Name(Hilfslinien anzeigen)/Type/OCG/Usage 50 0 R>> endobj 37 0 obj <</Intent 51 0 R/Name(Vordergrund)/Type/OCG/Usage 52 0 R>> endobj 38 0 obj <</Intent 53 0 R/Name(SCAN)/Type/OCG/Usage 54 0 R>> endobj 53 0 obj [/View/Design] endobj 54 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 14.0)/Subtype/Artwork>>>> endobj 51 0 obj [/View/Design] endobj 52 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 14.0)/Subtype/Artwork>>>> endobj 49 0 obj [/View/Design] endobj 50 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 14.0)/Subtype/Artwork>>>> endobj 47 0 obj [/View/Design] endobj 48 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 14.0)/Subtype/Artwork>>>> endobj 43 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 42 0 obj <</LastModified(D:20100921131033+02'00')/Private 55 0 R>> endobj 55 0 obj <</AIMetaData 56 0 R/AIPDFPrivateData1 57 0 R/AIPDFPrivateData2 58 0 R/AIPDFPrivateData3 59 0 R/AIPDFPrivateData4 60 0 R/ContainerVersion 11/CreatorVersion 14/NumBlock 4/RoundtripVersion 14>> endobj 56 0 obj <</Length 1045>>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 14.0 %%AI8_CreatorVersion: 14.0.0 %%For: (Christian Zander) () %%Title: (UT_WBMW_Rot_RGB.pdf) %%CreationDate: 21.09.10 13:10 %%Canvassize: 16383 %%BoundingBox: 0 -142 553 0 %%HiResBoundingBox: 0 -141.7334 552.7559 0 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 10.0 %AI12_BuildNumber: 367 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0.647059 0.117647 0.215686 (R=165 G=30 B=55) %%+ 0 0 0 ([Passermarken]) %AI3_Cropmarks: 0 -141.7324 552.7559 0 %AI3_TemplateBox: 276.5 -71.5 276.5 -71.5 %AI3_TileBox: -126.6221 -350.3662 656.3779 208.6338 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 300 %AI5_NumLayers: 4 %AI9_OpenToView: 216.9478 83.0522 2.69 1336 999 26 1 0 43 129 0 0 0 1 1 0 1 1 0 %AI5_OpenViewLayers: 7777 %%PageOrigin:128.8359 128.2852 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 57 0 obj <</Length 7574>>stream +%%BoundingBox: 0 -142 553 0 %%HiResBoundingBox: 0 -141.7334 552.7559 0 %AI7_Thumbnail: 128 36 8 %%BeginData: 7440 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD11FF9A9A9AFF9A9B9AFFA8709ACAA19A9AA1FF70A8FFA870FFFF %A2A1FFFF76A176CACA70A1A19AFFFFFFA894FFA19BFFA1CAFFFF70A176CA %CB94A8FFA2A1A1FD43FFA2A8FFFFFD04A1FF76FFFFA8A1FF6FFF76CBFFFF %76FFFFA16FFFFFA1A8FF70FF76FFFFA170FFFFFF9BA8A1FFFF9A76FFFF9B %A8CA76FF76FFFFA1A1FD26FFA8A1CAFFFFFFCAA1A8FD15FFA1A1A1FFA19B %76FFFF9AA1FFA1A1CAA1FF9BA1CAA19BFFFFA19BA8FF9BCAA8A2FF9BFFFF %FF9ACAFFFF9A9AFFFFFFA19BA8FF9ACAA1CAFFA1CAFFCA70A1FD23FFA89B %9A9A76CACA766F9B6F9BFD14FFA19BCAFFA177A876FF70CAA8A8709AA8FF %70CAFFCA70FFA1A176A1FFA1769AFFFF70FFFFFF70FFFFFF7076A8FFA1A1 %70A1FF9B709AFFFF76FFFFFFA870A8FD22FF9A6F9A6F9B6F7070706F9B44 %9AA8FD12FFA1CAFFFFA1A2FF9BCA9BFFFFFD04A1FF9ACAFFCA9BFFA1CAFF %70FF9BCA9ACAFF9AFFFFA1A1FFFFCAA1A19ACAA1FFCB70FF9ACA76FFFF9A %CAFFA8FFA1CAFD21FFCA69946FA1706F69FD049B9A7070CAFD11FFA176A1 %A8A176A1A8CA70A1A1A176FF76A876CAFFCA70A876FFFFA1A19BA1CA76CA %70A2A1A1A8FFFFCA70FFA19A76FFFF9BA19BA2A876FF76A19BA1A1A8FD22 %FF6F9A70A19AA1706976A1706F7076A1A1FD33FFCAFD3BFFA19A9AA1769A %70A1709B69706F9A709BA1FD6FFFA176A16F7076A16F9A697676A1769A6F %76CAA2CACAFFFFFFCACAA2CBFFCBFD06FFA8CAA2FFCACAA2CACACAA2CAFD %05FFCAA1CAA8CAA8A2A1CACAFFA2CAA8CAA1FD07FFA1A1A1FFFFCAA2CACA %FFA1A8A2CACACAA2CAA8FD08FFCAA1CAA8CBA8CAA2CACAFD0FFFA1706F70 %76FF9B70699AA1A1769A709A6FA1696FFD05FF6F6FA8FF6FA2FD06FF6F70 %FFFF6F69A2FF9B6876FD05FF706FA8FF6F6F9BA16FA2FFA8449AA1A1699A %FFFFFFCA6FA1A176A1FFA86F6FFFA1709BA1706F9BA1709AFFCA76A176A1 %9BFF709A9BA1699AA1A16FA2FD0FFFA2446F769BA19A7069709A70A29B9B %6FA1FF69A1FD05FFA16FFFFF7044CAFD05FFA176FFFFA169FFFFFF6F9AFD %05FF9AA1FFFFA169FFFFFFA8FFFF6FA1FFFFCA44A1FFFF70A1FFFFA8CAFF %FF6F9BFFCACAFFFFA269FFFFFFA8FFFFFF6F6FCAFFFFCAFFFFFF70A1FFFF %FFA8FD0FFFCA6F6FA19B6F769A70FD049AA176A176FF6F76FD05FFA170FF %FF706F44CBFD04FF9B9BFFFF766FCAFFFFA144CBFFFFFFCA6FFFFFFF766F %A8FD05FF69A1FFFFFF7070FFFF7076FD06FF7076FD05FFA16FA8FFFFFFCB %FFA87044CAFD06FF69A1FD14FF6F6F6F706FA1709A6F9AA1A19B70709AFF %69A1FD05FFA170FFFF9ACA706FFD04FFA19AFFFFA169FFFFFFCA69A1FFFF %FFA1A1FFFFFFA16FFD06FF70A1FFFFFF769BFFFF9A6FA8FD05FF6FA1FD05 %FFA26FFD06FFA1A19B76FD06FF70A1FD14FF6F6F9A70CB9B9A707076CA76 %A16F69A8FF6F76FD05FFA170FFFF6FFFA8696FFFFFFF9B9BFFFF9A6FFD04 %FF6F70FFFFFF76A8FFFFFF9B69A1CAA1FFFFFF6FA1FFFFCA6FA2FFFFFF45 %69A2FD04FF7076FD05FFA16FFD06FF70FFA16FCAFD05FF69A1FD14FF6F6F %76A86F706F6F699B699A709A69CBFF6FA1FD05FFA170FFFF9ACBFFA86970 %FFFFA19BFFFFA16FFD04FFA844CBFFCA70FD04FFA169A17670CAFFFF7076 %CAA29BA1FD05FF6969A2FFFFFF6FA1FD05FFA26FFD05FFA29AFFFF44A2FD %05FF70A1FD14FFCA769A706F686F69FD046F70A1A1A8CA6F76FD05FF9B76 %FFFF6FFFFFFFA16876FF77A1FFFF766FFD04FFCA6976FF76A1FD04FF766F %FFFFA8FFFFFF699A9B6976FD07FF6969A8FFFF7076FD05FFA16FFD05FF9B %6FA1766F6FFD05FF69A1FD16FFA169449A696944766F706F7076FFFF6F9B %FD05FFA176FFFF9ACAFFFFFFA169A1CA9BFFFFA16FFD05FF7670FF9ACAFD %04FFA16FFD06FF70A1FF769AFD08FF69A1FFFF6FA1FD05FFC46FFD05FF6F %CBFFFFA16FCAFD04FF70A1FD17FFA89BFF9A446FA1A2706F70FFFFFF9A6F %FD05FF70A1FFFF6FCAFD04FF766970A1FFFF766FFD05FFCA449A76FD05FF %766FFD06FF69A1FFCA44CAFFFFCAFD04FF9A76FFFF7076FD05FFA16FFD04 %FFA170FD04FF44A1FD04FF6FA1FD1AFF706944A8FF766FFD04FFA869A1FF %FFFFA870A8FFFF70A8FD05FF76689BFFFFA169FD06FF7044FD06FFA169FF %FFFFA1FFFF6F9AFFFF706FFFFFCA9BFFFFFF6FCAFFFF6F9BFD05FFA169FD %04FF9BA1FD04FF9B69FD04FF6F9BFD1AFF9A6869A1FD08FF776F76A27770 %A1FFFFCA45A1A8FD05FF6F9BFFFF6F69A1FD05FF7670FD06FF6F6976A170 %9BFFCA4470A8FFA16976FFA86F76A8769BFFFFA26969CAFD04FF6F68A1FF %FFA244A1FD04FFA16876FFFFA24470A8FD19FF706944A1FD09FFCAA19BA2 %CAFFFFFFA8CAA2FD07FFA8FFCACAA8CAFD06FFA8FD05FFCACAA8CAA1A1CA %FFCACAA2FFFFFFA8CACAFFA8A1A1CAFFFFFFCBA2CACAFFFFFFCBCAA8CAFF %FFA8CAA8FD05FFA8CACAFFA8CAA8FD1AFF9A6969A1FD7CFF706944A1FD0F %FFCAFFCAFFFFFFCAFD11FFCBFD1BFFA8CAA8FFFFFFCBFFFFFFCAFD0BFFCA %FD22FF6F4469A1FD0EFFA870769A7070769A6F9ACA9B69A1FFCA77FFA16F %70FFA8706FA170A1FFFFFF9B69A1FFFFA19BFD06FF7770A1FFFFFF9B9A76 %A1767669A8FFCA6F70769B6FA8FFFF70CAFD05FFCA709AA8FD1CFFCAA170 %4469446FA8FD0DFFCAA1FFFFA168FFCACBA1FFA169A8FFA8A1FFFF6FA1FF %FF7694FFCA44CAFFFFA169A8FFFFCA44CAFD06FF69FFFFFF769ACAFD04FF %9AA1FFFF9B69FFFFC4A8FFFF706FFD06FF9B76FD1BFFCA9B696F696F696F %696F9AFD0CFFCAFFFFFFA16FFD05FFA844FD06FF70A1FFFFA16FFFFF7670 %FFFFA844CBFFFFA16F44A8FD04FFA86FCAFF7770FD06FFA8CAFFFF766FFD %06FF6F696FFD05FF769BFD1AFFA8A16F686F9B4469446F6F9A70CAFD0EFF %A269FD05FFA86FA8FFCAA1FFFF70A1FFFF9B70FFFF76A1FFFFA86FA8FFFF %A1A19A69CBFD04FF6FFFFF6FA1FD0AFFA169FD06FF9AA16976FD04FFA19A %FD1BFF766F696F766F696F6F946F7076FD0EFFA169A8FD04FFCA44CAFFCA %76FFFF70A1FFFFA169FFA19AFFFFFFCA44CAFFFF9BA1FF6F44FFFFFFCA70 %A8CA44CAFD0AFF766FA8FFA8FFFFFF6FFFA16876FFFFFF9B9BFD1AFFA170 %696F6F6F456944706F9B707077FD0DFFA269FD05FFA86FA8FD05FF70A1FF %FF9B6FA19A6FCAFFFFA86FA8FFFFA19AFFCB6F6FFFFFFF70FFA86FCAFD05 %FFA8CAA8FFFFA169A19A70CAFFFF9ACBFFA169A1FFFFA19AFD1AFFCB9A94 %7670696F696F69706F6F9BCAFD0DFFA169A8FD04FFCA69CAFD05FF9AA1FF %FFA16FFFFF9B44CAFFCA69CAFFFF9B9BFFFFA8696FFFFF70CACA44CAFD05 %FFCA4476CAFF9A6FA8FFA1FFFFFF6FFFFFFF7668A1FF9B9BFD1AFFA89B76 %6F6970446F696976706FA1A1FD0DFFA269FD05FFA86FA8FD05FF70CAFFFF %9A9AFFFFFF6F76FFA26FCAFFFFA19BFFFFFFA26976FF70FFCA69A1FD06FF %6FA1FFFFA16FFD06FF9ACAFFFFFF7069CAA29BFD1BFFA1706F9B709A449A %6F6F709B70A1FD0DFFA169CAFD05FF44A2FD05FF6FA8FFFF9B6FFFFFFF70 %70FFA844CAFFFF769BFD04FF9B68769AA8FF6F6FFD06FF69A1FFFF766FFD %06FF6FCAFD04FF696F76A1FD1BFFA16FA170A16F696FA16F696FA1FD0EFF %CA69FD06FF9A70FD04FFCA6FFFFFFF9B9AFFFFFF9A9BFFA86FCAFFFFA276 %FD05FFA1696FFFFFFF689AFD05FF70A1FFFFA16FFFFFFFCAFFFF9ACAFD05 %FF6F69A1FD1BFFCBA2A1CA7070A8A170CAA2CAFD0FFF7668A2FD05FFA86F %76FFA8A86FCAFFFFFF7044CAA8A16FFFFFA144A1FFFF7670FD06FF7669CA %FFFFCA696FA1FFA8A244A2FFFF6F69A1CAA1A1FFCB44A2FD05FFCB44A1FD %1EFFA8FFA8FFFFCAFD12FFA176CAFD06FFA89B769B76CBFD04FFA1A176A1 %A1FFFFFFA1A1A1FFFFA19ACAFD06FFA1FD05FFA19A769B76A1CAFFCAA19A %9B769AA2FFA8A1A1FD06FFCAA1FD42FFCAFD0DFFCAFFFFFFCAFD13FFA8FD %0BFFCAFFFFFFCAFD30FFFF %%EndData endstream endobj 58 0 obj <</Filter[/FlateDecode]/Length 13092>>stream +H���r�:z_�w��Nw�l1�`�����9�0�����a���!yd��<ؾ���~�m0��ݞ�i&D�w�~����։Ę�<�F�/z�`%�12�茱4QR_UG�iX6 u�Z��� ��TSW{SIE1G�ay��G�������}�^| � �v�8�=*�����u,�m96r�cG��a>�IB��^˃��HyD��+�#՜��|�C��d������,�j�~۠��0���R�$Iz� ���,���`�O�G]�û +8��RF��V�1�w�w�M)�.�٘�'������a�>^�V��ust6��!Q +T�ZpHY ���F�֚Z�ӄ3\�Z�^;���l�}��ڋ��3�����"���#��Q����IJ�p�Ѯ�,f�6�X>�5�-�sLp���9n`�렚�ۖ. +����6r�x^+�Y���)�?F���̧��Y� ��~3� eD��T�ꎾjgN�a���?e���|��o�p��(��Rer�+$@�����72W1�����u��h�P��w]�ZA��P� FJ�C��^ +w��L�槹b�����! �$�P~�-��A ��m�n�'o%�Vi�tQ+�1�Y��_���,�g(Ex�H��E)�l�b���'f:"��)�@ +21�`˳��yg���/)�<+���Y +��R����j�P�% ]���PAW�����p� ��>L�"���Nn`�$(�y,��>!�P�+������d���oi���LD)�>'L�A?C����3̱D��_�θ"�):G3̌��1x���XM�%K�;|´;S>�2A������:m$��4��k!�R�0&��� 9���D?���!�W<s۶�uD>* ��) ���҅1����a��D�xJ������o)yTZF�-Y�����l�l��>������.n�/�To8���%;��n�����WA�1�����|���r��v��o&hg=[Ղ��R���{n�q��i���a}>B�K<#�e�>����FW�q����y��}o0����0���{n[`C�eF+ǃ� ;���á�O��o�\tө��F7x�_��5����F��*FfT��Ή^UP�;�7���V��u_:1�oE���V`�M�p���hm��~��Tms�2#�桲���C`���m�4Os�[;�i6a-��e/tW��AR����0�[r���������o�ѱ3PVr��_�k`�q��\�b��\y1�ϐ����z��r�=�\�_®�(��~�1�toIǩ"0U_jԎ�����_� +�Н�^+4���o���G-b�A���h�e� +:��Ò��:�,-p�}���$kO?�w8���&�;�����5�Q�:�����1b�}e�?(��� g�'���1#�$�ި�L�~<?��5�3g�6/��Z̞���yyx�%,fz�A���z]�.?�*�U��������� a4��{����َ����5��XM^^���8Ĝ�s���.����k�i���X�#>�U��hJ�dzH'_b>�]��b�Ac�`8'��JRxg<Ĵm�`�7�IW�<z����U��#X��W��w��H���� +���o���\~笍�Tc�e�B��D/��E�w�l���I�*4�"�w��D0��$��/��EZ��L��'�H��u)��T�&�6���J�� +!��Je�����U�b�j�&n����'1���ЀF(��@-Vn���q{q��9���� 'A��%J�����{���v��%I��$�DƐ�*�M2�����+h=?B�~��t@o"��2�K�sg��I�w���1:�|�� A}�Z�tA�bD�Ioٿ���|���=�!�NQN��;]*o�R�rYg�Ch�P�hnV�H�(�V��A�1�6��BmDg���쪑��e�w��&%��]�m��O�,ex��Γ)��y�hH�;��Y�"�L;%1�dž��yvR�,��������qG�u�dK@�F�ױl�A��!_�Z�t՜#Mf��Xw�Ps��Wj:���+r���'åכ�2]�{i�S��PA��1�<,��Ӱ@�RS�뜝��2>�@�Z8�'2"�v�P�R�5�SN.V��(7�(�ȣu��E��J�E�s;ʢ\������W��\�e�,��2GuˎZ �[�#�K�(�(�{��gD纷udFd��&�anpЛ��P?d�O;b�*���r�.�+C��u�3��Ư�9����=IXTr}����XZa���ގ6q"r�S�����m�^�Z �)��E��)����!� �rJ���\V�����pC�����<�$�dV�\�ݺ}�uݶ2ìz�b2���X;��q�y��'���?�W�V����!�xC \�� H����n� I�*i��=���y�;�*��P q���jf�\��s9w-�� +���U��#i8̥�1AL8����8��O5ē���^� �I��C�L Թ�01��W�XL8�ʿd5��pJTH����S�<�)��t�Եp��!�E0z��߅tZ�2Qd�j2��A/�o#57XY>�����@7$} ��<��ׄ���F�4)RK�hA�]���5����[b(AU�M}n�-��M���TW�(�]���>7�c@�E�"e"_nϣىL)h�(X1��f4�鴀�b1�܁P���0Ê�9�!�HA�,E>O�p�Xi�%"���uK��)P*a�v����!�� �� �D ����@�d� +1� g�YTi��e�A3FGD2 K��:һ�~O$�Eu�����6���|xOq!�/Y#;Y� +��-!7�Q�@�LŜe@*�y +EMd�b�n@�(�0��S�Ab��~���Hq�+��<"x�$"`ќn\��6�B |"�1��:xfu���h��LE3�F�U]:'�Ա-�4 �"gBzO0�9�N��a��oIt�b!GQ�3v�2a�=�Gw�%�b��� ���`fi�".��/Y�|�Cڠ��wGAp�@A�lq�]I��趹�.��U�����E��"Z���r[�F&�ݐ��� WU$_Lʍ}2Ԛ�Xາi�!h�d�g(��k +�Ȃn���e�o��M�k;�� ȹ����� �m��ur]�n�Q�YN��S au����nvdIGy%:��dX]G!:͝�j��BPx�0w��,"0K�21E����8Ҽ"'����CD4�+U��b�3Q���E��i̿��dž�Zt��(���Y7���ʹ�=T/ڨ"�����,K�87U����&�*7��-���p#�����F��7��H�ˍ�����Z�~0�9H��sF��В�;�0�A�o�A��J�Iy�i��#K-G�*��A�k!m����tQ0�§�"�����/G�k�>�[�mEa��/��k�.�#}"��^)Z4=�D�̰L�*���:�2Tf��cK1A�"�+[C��?��FKJʱ�f���`�n��u#�y��� +%Ɖ�GI!an�]�)N�7�@��/��C�U)+�6�pk��22?t4�9ڕ��]�6ݿ��0{D�r[�=��A��$�h}����6����%;C���l�Ʌ:hb@L�T�F#��4{Į�;�0���_ء��_�]U�d�Yu���kQ@ ؇�b��l��czQ6Ӣ�¬�0�p��O[r���z��J�DY�p]CV$���y�JD�� *�!Y��T����>d 2ׅˁ��܅��]�Ͼr�=���(fNѼ$��?B?�� c +��&�N�Nq�)���ϕ�Z@`9�57���N~�w��j�翪��l�Z ���4���K屠�/l��5@���b�m�K�)��]�*��V>EDA0Q)����w�K�'5�w��W�`{��@scC@��$z�!x1/G�*=P���q28�Ҭ��0����S7sx�_X���"b�Dp�b&T!t-�tS]3;��Dh*D�@J�ޭ�� ����~��> 9J�%��o�,�i�֤0��<���Ĩ���ňL��msR��r��%�6��!�Dѳ��i���lct�-l��+qPW�������@��ɼ�C���R�|[��y�C��r��h���2q�5q��VL���4�N���w3G~��nr�������i�<����˵αP��'����q����]ǒ���J<�8Ŷ��c�� +|z�b ��m}�ƒ|+˧��(�^��}��Y����i��$w^ʕ +���Q��r����_�ʕ�8B'�by�vv��OJ�Gw�����_����P��Վ��Rf�\Ԧ,���D%���f!���R���:xl�����6�t�k?õ�jf?���7��F�2��k�3���8��6��i\��T�������g]����y�'��z�e�/{����e����Ѻ��g�Ŷ����&�_�츤+q�o�{�[����4����;-&�jmPX��;����]5������A�o|}��/��⡭'�6b�;��O?��fs���ܡ�()�x1�{����kB����c��UI�i^_H���Z ��^5]R7�mZ�l���5��mrLR\~��^����{��֣�-�Y�@,Rd�e��[���,R��q��|T}t�&��?����5|��]�J���Z�o-�mʣ�v�Kci���uB�������i�,�Ң����Y<����'�|��nsܷI/�Ƶ��>���Nj=�J�^�����m���I[;H $=�V����|�@Ɣ����Wɧ���k2I�������O���Y����+|�{������������聤��u����o���F�,��t��r�Vf�ޝ�;,R�Ʉ���l�8�)�?�{�l�����������L�RR2_�:�Il|"��?�ؤ��m�X�)�Pڋ�B��K���k�i� +�f}�hN�u��'����i�n�X�W����1����W�Z�L��\D��J��^�(G��>����� Iv�M��A'�>���4����i�x��M�Ӂ2n4����z�шaX����ދ"0z�9����Z5� $"��}��W��n�U,��n����+�l� +�r�.��4��� jF��(i���[dT�t�udZQc��l�'/-h4~���k��߶+�h�������nXPn�����A�>�R�1��[�ԟ�Ǜ��&(J���塔�0����e�'C�A�x�_��*�I֗���9!ի_�n����K����k� +m�t{S�T����z8|�c�/Fw靟!�}�������ᏼߤ ���zܧ�2r(���B�!� <�n{w�T�X=���������(w�4�K��Y*��҇�ȳͨf���oeK0�߫Ed>��K����8�~K��k�E��ïG��=R��~"�.���M�ŭ�9�����*�T�?��C�&]�S�6'(w�@�ʣ��D��lg��������� ���S���d $���Hz�1 OCw����:��.��o�@*}]��z��ﭜ~�]�N3�e��j72/�;=^z~w����w�Wޟ9>R.ԟ_���S�9����3,�W?~p��w��AW��n���������qs�I�S��v�����*����3�u��o6{��z�o��x1{�d���+�G�f1��7�%��m�TZt� +d&�We��b7�-��'��l���gNo��c2�!�^�(�r�_��0K$vےn�l0`��Ʊ��͢ہa\��v�����F!/œ�X#a�|��J�dU�kE$�*K�k ��V��݇����)1��7=����n4Lhc���!F|-����A�~�+�_%f�Y}�K��qC��x&(�cRޕgR�<O-���%��=�d���Ez�x2�I7��}M�|xu!����՟���Ί�%EUa�^:]L���z_��rK\�_����.ǫ炀��CC�G��'Jٔ@S�K��S��kB�м���N.��y�z��L�xQ�b� +x�b����>���Q��O +��2r�N����Ǹ��UШ��y~j��Ojh��!�c�ooB��r^�����U�,�=����������w�YF_�3w�B��eW�g�=ft�ə�l���Y%�����CBOa�[� ����� ��x+ȅ�MIW��X��)�Nea��Z���]���;��A��;0��B���2CS|7�����-��z�O���ˑ�t<�Q�{�*(���0:����� ��0�a>�!�>�X�ǧ���sus�ҥ� +�f��|&X[��7�d�䰅�\�Ł2�*0u�`��IbA���S_9�;�C�<.�/1j)$���J����D��� �^P��P���S{c�i��ވ}-�)�/���ó�*��s]�)eF�d��WK�$����k�BO �XLv��ŏ����� .�;�ڹgO���Ox�d��b�.]{,v��J�}yY.�i�ﴂLJ���h���X�(�����U��;�e�q��/Np�����KG~]���i��_���'fG4�S�ƾ��� ��e8*����L���6m�&BKDZ�e&���M� +e��ߙʿ���.[����~��Wr����X�ʎ��F��)���4�S0bIoP`͋�2Y�x�#*S��b�N!��Q9���#ܞM� uEe��3ǃ�.ñg[�CS�uѺ?��NuL�d��;��I��� +��A��>�0�%Np�ԑ����i�f�_��h�a�ŗI��)�&=�5����2y��`n���i*0�����~a$t>Ȁ�Y%�){����`~�tęg�v%�d�����2�S[b�!����(�EJ5�����RO�{PD�Dϝ\�Y{����3^W|ɨh�z5��@��e�U ���d=87�$:>mEE���%T=X���D5*z�W��ͼ���A�\T��;U��9�R���<�b��zu�41̴ +��}b(���w� 7�+S�p*�d��q�J�H*�'ξ-��j�l{��ݞ������l+&��nY�נ��b�a���R#w�}�l�H +��U���y�+(�;�F,���`YV�}w\b�EG��;\u.�s�n�\V�c���K��o����h=w�S�w2�a�g���x!b63%�}GQs2/j�1���,~*&����N�UT5��� .����oЮ4��<�H�vMZL��F�˽�1%�����%z&u�@��<)���A�EARZ�?T���8�X8Ǯ��g2�����b�����T��''�FA�Ѻ�M�^�����h�y��^�3x�2��8��!�f�8�)�����9u��4D;b���M�>��tD�����c���n$t-w��C��Q����@�n�U����}-©=��9��-5W�ra��>��s�@7C���N"���,' d!�=f�27 �f� ���⻩�O��O��N&(�j��3���C9WހX�z��� B>�R{r����.e�{e�](�y!�a�~�5�p�v�i��l��c��(sr>2w!vY�eg�7��3����z�������1-�.<i��h����l�8چֻp�0cO#q�6$vajI�.Ԭ��v]�$�6ԣ��v��+�mY�ʒ�x����7�9��M%-~�%6����c2P�h 0]��P�;-����VREK�E�w8�20��� +��=ʛ;�~��.чT�d�E,�(e- �k �+�,����H��P���=�ћ62��vw�A*'$����m�%�{�<����ZLu1�EO�Y�~R`(�:nbیe����\1+ ;y<�:TƠ�hLegEfG���{"��)H �K��gR��+�n#�=m��:_|��䥯�#N��|�*2�C����/=�=���^�[��P� �hA�o8��"�28(a����\��KzMB��O�K빟}����ED� ������q:՟�Z�J�� �Y�T�l��S��f���$s��?�@�p��`|dmu�I����U-ex�f�+54_ �U +�T���L��?"�Pw���4N-�j���� ��t�rr�pz�r#�S�Y +�s���1۩�/ �isz�~�l��Sx_�?�N�w!���.���WE zNc��nN�?�������s��j����?i��t�����Bv�8<M�OXN��z��t*���?� #ד``<�ѝ��y�^)8��]��00�q�y%�O��6���N +۾o����hF�$�ٹ��2�����`"ʢ +V���R]� ��xnC��M�3���(��,�]����{�Q4���>*�3ԃ�.�v +��䭠�L �È/9��gT�KI;R<��̌҆�$�A�:�=[�*>+(U��:gvߛt����H.�\��!y��?O��3,��]�꣪e���~�"\t��w + #���u"�ƈ�@..�X ?��f!�1��Z�+�Ґo��bA�6Y�x�j�M�������Z�iSiљ� �cǝ��R�� �д{�ƥ��VB��U��~�U��W����Bc��}ц��� �t�:9�JR,��j��2d�,8Z�¸+����2��<�7MS���јUy'I�Y��I"���A���ۓ.�Yc����V�do=V�h-�F�Ǟ�(��u�YJΌ���֩qAeH$����ۺ�J� ��cWl��z���nb����<ҫpq�d"��tbz�b"��+�Ph�36X��QEVwu�e�kpo����ξ���eq���՞����*VZ����8T��xP�ct�m�P��C�'�Vn�\b��������E���K�s�a�*���}�dS�sg���~U���G��T����*f#ھ[���r��c�E�x]Z|lO�ўV:Of٫sa��Ԇ� �p��2�;c=>۽.�D�$"�����g�]�@R1Ӏ�VY9��aDU-�z�:ͨIiE;;uT�m5}�<tF��}�rdE���������4����ޖW�}ZM�8��"x$��R呬I~Z��cH�JSR�E�R)$���{�1RX`�}�c�i]W���!��OP�uJ��G=�@�GH �|d� `2Ի�����r�]1N�A� +I�}��ޭ�ǻ&F�W,ӄ�;�z&r��f�tA��LK&f�M��NRaar��+�(���d����znU݇�>S2�SO�\��&R�gS�Q�T��*77�_���[�w�l����+� ���'D˭�1o��.�M���lpz����bۅ�!�Q&�(m�`mN�&�u�q�|�!�2���������E'�Ԝ%rȄ˽L��Bx���i��>��t�ʅ.Z�Dj�Eޞ��ԊQnj��$�ˢE=����<sT�W��F<�p~��ET����-���₲�7T�]x�h|�N��x���d��� e�� +<U��V��"����}Ʃ+�O���w��(��e�o�7;g=�ЌAS)�)�����8����3V5����ߙ�vx�av���X*�k�{Ecb��hF3Z2�X�8�Ͼ%1�1\>�C"M��!������y�����4CfAL&�;���L03����b��7��H_�i�#�#��y#���҃x�1�h1#�o�j�DL:�(�u���0 ���F�[�<�9��:��w�Gc���B�F'�صn����_�=�q��igω����7˞J���P��z[kkg��_��ֽ�}b��w���1���אXB腵���CUY5� o����1v���1�P��l����XK�i�����PL��vXC� +XB�+�o_C�I��[ƪ��Ӣ*�b�]o`����:�����}�tqq!㈀a�p?�8���\�2���.4ǜd&�~�B��C�������G���H�v�M��c���vΊ*������3���<Vtf��w�\���[-Kd+��Mu���+`7��8|RԍƗ��"�����O#�k�.a�\B&��4��b��FJ �zf*�K��<"����R"Y�$ Sz@a��ɋ�|lcUe��J���VlƦ��J�K��)�+1�G�k��]�݈a�B��Qf�����0I!��GA���!�V�"P ���¼ȓUfR��B��$iNϯ��WōEX}1b���V̺����r�eZ���a&�\��w��jbH�u����e� ���8d+�ydP/������D�<����|��4���>��K�VǍ����i��~w�ZW���sqT�]�f�p��j>ԂoͻZ9v��8������R�����kV-�5�6^�*��SnoY[�ݔ�h ��,�AJ�D��=�X�R�R0���O�Y�T�o�R����N���2�'s��?hN���B"��s������'��i7��pj �R�U�/rl�z��t�^M������.P���Z��qq��(A��ꩲt��0���Hy������T���L��z�G���T,�����s�#�S=t�v�� +>zN!&c������v9�i�3�Ӵ^�j�=��d}��SB��i�;k_�/�/G��c��Z�N'��ȓD�SI*�Vi��)GM1%�`AY��Mo\\�y��T��5�\\��"��R(��t-v� �u +��H9J I +�U]�,l+� ��O�-t�kGYa��6࿌��7DH����t�s�Q�D\{n�`��u����[���}v�Ѓx���n� a�b���w���/X��i�G~$߿�8FPC��bAMVߴ/��Ӧ���em2堪��_�A�TmX]Hl�&^6#���Fɖ�o���"���:�n�����W�A��cǝ�3RK��le%�Z��͗P*澳�ň/����R�cEA'mXKx ���P�tc��KPl������{F6v*�,�D�}�~J �<�7��L�3�ӄ�X�c8I��$a{�/�X�o�ۛ��2q�L��Q�ډ�J�a���ŻH��^�[�3A� �a'l���C�dQ`��;�#�#*����NH�CW����x�[U��[1 ����S1z�@���`W=�)�3˪�)�����<��V�4Q +�J�R���JcbS>��d��z�WK:�+# ���#X�8��[ܐ��/����7�w~��u�H�%n�i)5\�$6��I�!�V�&����v�ɸ��ސbiO��8���b��9����5-��ݷ}����`r�Ԗ~�ح�#c�*�G�Sc��yC�>�B��n���E��!��L�;+t�߆�B�� ��}(����x�+Y�#��U �nJ������H��X5Fuwy�T�-�R,W�U1�j�9yv��$�X��O���l9�-�/qK��eC��yd�jӑ�O��^�ٷ�*�K��X�TTة��R�b��a��_��`|�$�\�o\I�����˅��0�E6��ʡ��}M���y��T~�I�SX�.�xʗ�Y���cx +������K����c�Nm�$5 +1��)?��s Y����ች0�ƃ��l���-�^D��E��dWB^@[�v^�ޕM|�օwe,L�J>c������.r�<*ja�$����/�0M�Y{�Т$4r%���ɬ�����F� ++V\���r������B�1�q�vȧ� +��&:�<��V�rİ=�'&h�ۄ�G� v�tm"b�{�S����Η��ᒚ0-\�U��"%>NE�ܕ�� /f� +U^���beg�T�懕ܨ��5Q�E�s ���ЊQ��V�@�{�ƮN�>��¯��P��D�U�8�����*��S�s�]���u��vWnѸ���)H#Э U2п���3?��Q��A�NQ%V�������3������[�nNI݊���lY[�k��*/�����NXc�o�����~�]���8�ʾ$�v+���ήHP\�۞�.g�<�c0�V��z��`�Ԍ��IF��gv�c��{K��a6�?����7� +� ��ʗ5?�i>wH��,��uHz���bhzMt��r�p9�����:~�K��w%��[* �����*�D�H�a,:i�w���<����$��I|W9AP���K�|ycݕ��z�v]I����~^$��U$�h�A�6��e�,GQ�������iC����6D�s'b�~�l�k_m�*vĘU�㏽�!�b�Pb��m8���P^�c���L�Uo+ E���}d�W��S�X[��U�A���>�Ҟ�ey` ���`t �Œ�я�F������A�SJ��1NE���U^������+%t�e��e�"#t�`�-�P���|����Zσ�O,:�.NJ����/o��8h��v� +��X���7t�5Kk���]>I�Ŭy��Vn��%��D'g'�<3[ ���b����0�iÑ�6t5�z �3`22��b�榩��[��bH�2 )�9?��2B���Da�R�����R�P1�+X�����˗��}ܕ(�����] �T��5<�} CTc�)WM@!'u-��؊� v��0��1�g��9W=@;���bp~uMp����Cyѵo2�,�n$�U�Am�ar�q ,ޚAgxPW�f.��7Y0�?�d���5;]�6&��Ęx=����ͤk�Ϟ���L7�RV=O�"zmP�>V��Mm<��T�� ���?�^N�臿>G}eݻ4���Gл曖^5�Ïc4�9z�d�g�/E5�Ӄ��o?�ڌqT1����Q�إKij��g��s���U�� ���zz��g�c�0�#�h����fj�r�gTQ��BP���Ŋ��y���)���p�1j,��%1�4�,�������h��6z��F����]V�E��OO��v���B0�Y���=O@��1��1:�Lm1�F����#dt�3����.{#��L�rR�5B���)d�G�R9HZ�r��e&⠸�}����/o�R������Z��Gt����t�ky"��p �{>�'c��Y � /��R�n�_����ة endstream endobj 59 0 obj <</Filter[/FlateDecode]/Length 20377>>stream +H��W�^�L}�>H)P����J�E6Ap�,�EZx�o�-ݧ��W��$'9�I!SY��c���>�,����us<A���a�ե�4�D�̾�/6�@9�M˩P��r'�=�ҿ���t�=-��Y���3$ɼ���*�7 o����.������,D��.�[kh�|!~r�Ӫ��j�_��r�RXeo��4W����A��M�O�[q�)x_���/5�\"HN�5'*����A�9�*�Z'�D��Way�3e���_b���ĉ�/�5�J���A����V�G�G���%㳕�_�A�H�.�x:ŗ��_ዸء��R��� +��݄�t`Xr �}�7F��[Bzռ��� +��,�z�)�f%6R^= ,�=p��m R�MG���8<_���b�~Dh��9�u�i�Ԏ٨��"CK�.M�Ь��әgh$<����Q��.f��oTѰ�{U��[٫;�3[^U��n��Xt�a�*�niJ��i�C`L���"� ++ `�]�l��B{+'�M���t�g +�0�a�},�����1�v�9����~��+�z_A���I���I�?���]Ů����j�ɰ]��݀qx6OE]ml�� ���'��CG,�5!��!���N:r��,B`����0��*zG�Q�[�+���՟A�)�����C� �i���x�i��⒆�ũE9��Ḥw{�.N�{Z�p�h��.C[�$^�'�O�Ek���b&ms�$c�_�i��Mĸ�C��M�R��Xi�pI3�T�_.$�>���7"'����|��C%�2��z�� �Q��;N=<i ��+���1-�r�_i�#�z�:+mj�U��q0���� ���I7��� +r��u�o�م���-�Jn���R"�Mx$��o�Yv�Yp'V\��e܅�.}l.=�K �3k�GT6��,ϓV�t㭞`��$���w��H�k�MK,@ �i\����ƖD+b5���K>Z�8����2ގ����)�wp�/�z �X\U!���C�钺W:�z��#|���R��,N�ɺ���D��NeNI��a4���'�S�{۶n�E�.۶�T(��$�r�\�Jfǖ��dv�I��&��n�Ztؐ+������MA?<C�l����-x�V�u[�MàO�a`tTQ�8\����E%6��� r���dG��re���Q6�0<z�^�d�W�}�㣀q�E�Pc>�����(tα*�6f�ӫ�]��:x_�4���웆U���2Up> ���8<o���KE4�j�eR�/j.�1� o��e�yThZ��rY䣸�t�65���BAιX飊��}{@dڻv��2$>mXt��3`lc�uVz�^�_z���^%R����g�U���o����b��d���J 3�w��\\9���@e��)��^c�{j����wr��� +�&H_;����`�W��?�����fE���D���L�$�a +f�n̺�a�.5b�[�{�]�j�՜����S������o��a�]4*/w�Pj5k��dј�R![}�`?<Ųes'"�- +v!�н��\�j�Y���Jk�q�,�f. �u�rv�+�X�,���&'lV�ð#��� �ɺ�7j;:=*o�b�ر�в�v��1@�Y(�Ґn�z���n�h#�W�+y��.4�BC�@��R�9 ����[�$6 ��!s�}L'��Ǭ���Si8���Gj�poڬ�� ����&+��Z;͎��nS����fi��F�����ǟS��`|4�J=�uV*��>R<�7����!?œ����x���1`L:'ʜ�-A�B���I�@;�6�թf�V��~�r��<�o+�;ԡƎ�����-��b��2�0�5�?T�>Z�(*a ����CV�]ה�x p#ߊÃ��a.7h�ݒ��i0z�Oi8r��M8��uv��Q�E�I��� JM]X���z�͘��%I�!f��E����v��}���W�\��/\c��5�ls�6�ݥ�Gy�V�Q,�~�t�c\aH�~Ұ�䐩��c�xL���BT�}�[� �U��S�M���Xm��"H�0`�BcQc\��gO���Tqx�����dt�US�� �!�_M�C�m8@ ��fE�M)�o�t�1�i�չ�]`��7T*�]1�ܿ5���n� ^5��sc��<�Lub�c�x���-��|��6�C�egU=���c�Ӻ��X��e ���J����ᥦ,I�|����L�̅S���u朖�7�z?�j�?�X�1��좁�j� ����B��� +���7��r� ��~s;�X�6�]����Ƣ���>ն�>�i�����ρȴ�É�L&e:�1�|��:��ۆ~��Id?BIR*�k�dC���C�eHg�V�� }5!���$s�@�Yl�R���|I_�U�X`�w�UV<[߲b�v)I�ń�_(����a��������G���$��]V^L$�_����pmHZ^&��$�]�zݬ��/<UV�W���YF�Ҷ��'��/!���������m�v�U�t?M�bar� ���,���X����|:n����_�} MOB���eAW�`�&�ޟA%���V���d�S�L�)�i.4EN�҄���Ќ�cơxA�p�|Z�/m�W�.V������l�WO�p�6`K��~�ҝ6J�|iL*�k�3 +\�O�'��H�����#�����`r����6�2�U���^�,3�&�����2�3�^���`R1{��� .C,�IG�?bWk����W�r����a�d�c��Bl���0A���������3%�S���/�F-z��{�Z���'��/���x\1�)��df�Յ�I�%�nP:�]w���e; ��f�������L���}�����kk�Тq�b��[�"�cO���:���u��Sz�J��`� �D%�@�Ւ��$`����hG�EK��/~h����r�G�DIBK���������b8�"�M���Jt"e�=g�"��� m{� +sCO�i���lI�LP��qz%����y�Qpxy�)��D�k���!�6��� ��UGRawh� +��Ǚ�^}Yn���`RY�"%�ht�T�D��ˋv�<m�~�N._F|٥ +=��'�%�\� �ay&��!~��.�=�V� %G4���tb��T +�E�r:��M���1��>�@K4��Ll���)��!E��ڏ�̫Aٷ�T�_� ���6ԡr^���p!���G�rbu�9�K�ȿ8��~���Wo'Z`w�w"E�sW�����W�m��qE�|r�Ya�y���t��p������:D�=���.2X��e���H�;��0�u· �HB��1����j�����Xʿ3>i�V�NoqMWV�a3C�tpAQ�8>S��S��>N�d�,�H�w���I`����?X�!JT��7��̍�b���Y=�Z��2�=��ژ��.ֹ�4\�Ⱥg$���)�3n1�wɋ!��C鷃X�;8�J�m������r�[L��żO��iI�h98cF��'���3o��FczP�sH7Z��w�8y3�u8��fп� +h�,��B��;��A�H�]�����ʔO=Sb�*2�����[.i�ẀrY�I��ݝ4A:١zsa�B�����g$�F�Sl� ���f&�]�:�fG� 8�^����2�X>j�.tX;8P +g;0����g/�>��vi�y&���/�ƛ�BС��ӻB� �/8!��X����:���Az�2Y|t����c�.cw]>F��4���w���2�����P��qb�ڰ3}��;�?�b���:���z���x�����I$.t���α��TέԱ�Y��ғ�:�jg�Υ�ۻ쫳k��\ =�>��R�]���].��+��ѵ��\˕˙�>��W��Ը��[�x�ˡ��\j�+m� +D[���6�P��+��b +( $n#�a ��l ���$�:��mi��2��ƆZ�ʪqS)M��`�X��Ohi�ʕ�28|u� �V�"<�^�PJh \�\�8C$��-�9��>�d(��BV�O�2J��T�6�A�4�l0�ؓtu�ș&���#=]&y��l�s�j +O��s�j>b�bd{���&8�>�U���YmHBF��T�˾�|�e~�!:�����kf;5s���2���V�48�l0�<�tDQ"�,�r`��������~�6��$�R�dS�͑]��d4�^M���:!��ۤ/��<3�ᬬ��S�<���?�-��c_�=&��T���g��u�X�/�Q��H�Qx���$z1x�ͨ�^3g}�clJ���u�`�1 Jʴ�4�>�� ��6���(h~4���J�~2�^{���B�M�UњKX�]Os)K�����Q� ��Nl��+R]�a��2|X?|c��������'��#�7 ��ߎ@��P.�F���r��1�+)J�/�{ٮ�������x��P��~y����~��|X\v���W�_�j�d��Z�+������� �ܝ�e�sOQi���b����Q|���,�9Ǖ��U��_u=*��d(�5����+�f���z��)VhJ yՐs�3���J�a��ɇ�Ǩ������j�����ߜrI%��ɇa졢��By(��r��]`�#�D�w����U�$��L�3���I�Pl��R��B�b$�D1t�L1�e��[�*H��K����B?K���~�(�#m>�1�4�x�'D���{DiM�?J�d�&JO��=~�(��q��,Q#��a��L�Di����� ;)� �d�L�aͧ0su�?�[G���"�X!���~��z�I9��^� �+�n7�����۫�ђ�9���]����"z�X��" +���#�� ��0n\�2;��mg|@R1MD�%.wSmpU���O�*d������������v� �DH5p +����\�#��4"�H�,��,or��U6��ֻ�E�_[��ڢmN^mx9�!��MT�k"V�p0>a]���W��2���"���ǭb!��w�A&�K��D��$:�{�u�t��1[�qB�Xx��ɺc�#=F�C'�E烋X��Ŕ�NX�e]����V�3l�9ǟ��Q�6iû�v �e��"��E�w��AU��bL�<�H���_s� +���+�B��w��p�=��oU�m��3�n@�V�%_Q�1z����ɤw]���2��g��~��Ł�(��,�܍�_�GzT�>��`9(6С���>,n�oA.&ڐ����#\��y�Ү��+������w�y@ieP1�FP��i��@�2(>W�|�o�>5�HOq�����:u�{���b��2gwb��w>~���Q|�ߗ�l/$�v����ν�^��e��o~w^��x2���qv/�ȃq�Z0�*8۫"�*|�/����;�V1i�^�]�w84%��e�����h.���K��b�� +o�~vm?S������&�\�p�k��(s��0��%^\nbe���F��&6���]����H#/�7���.�ذ齵t麡=p���<:��8X�+�4���ek��_���ۗy� (OG��Z�GQ�>4G�[���]z��y�p�U 8(�����������O���;{���eV�gE�&uz���I��c��E�-gt��,����ZtgUIs��A5��S����tD;������-־s��c���qq�~A��˧�v��Ҵ|�^���a���~�|��Soz�<��,��t�uQ���#uP>�����m&!�5�K���qa��nd˝���%�����h:gW�b� �ŧ�UJ��r�����} +�N2;�yJ���Wn^ O����b>=Ɗ�I�x�� :���������ڣ�������qa�L���K��g��u��W[l��l�{�y���g��������;��w��ѭx���������D5eK�<�c����Xyy���l���T�ϳ�3A~��o�����;7N ����d������[8e�7��/�KfO�6��ݙ����@x��]�{��D��H>J�o;��_r�~Ñw�������h~$?��#���}�'w���s�y>�tzx6��y|8�������������Ë������Z��~=Z�:>�^]|:;X춑�����l�x:;>?ۿ�ܭ��������J7\�[�[l����!c�:�n �=�e��������W���ɛ�'�gLJg��ٿ������e�n�����?����w�ڧ��Yk��#��x�|�zo���i�a?��R�Q�iZ�����Epm��vW��ݽUɺ�U�ý���RJ�?㏿����~�T����g� �wG���q㻱��G8N��r�"�m'�익0J Xٍ�R����d�֖S��{b��c@�/��m 3�V\ø�Spɰ�9�<rV�L��R3ޮR�Ʊ(�q�pWb��~��6�K�t�,�焈p] �87D��&틘�=s�;i!S:n����X&M@��������¸�{�%B�9!� ��� U�#��zB�}F��ӑb�������VG���N1�0�J� +u� ��;%z.��Q��0s̘`ʣ��1�HR���,N��H�'d:",جr��`���Z�i!Ү�^ZCkP[B��r��5��e�`��@�*2o��@<M���bʇ魰q(�%$��_�)dQ1�m n��z�}�LG��^{o*v6RVLZ�k�e��@� �F���J��ˎr�F%m�+,j�߮��{�BG���S�7�>I�@�u�`��u�|� n6�q҄� +�rL�`\DH�IG��H�g�&�W���p��x�<����P�^īIC9�AY�!AX�ΡdM-��!ޚ��;�CI����a��@��ډ� f(�����F��k ��#�[T���-���G K^�0p�1ʈY\K:�'2�"�a�cP�)�k;���xBtd��Pm�X�Y�P�.Z�A ;¾�!�=D�@0< +P@��"�ǔmVyޛ@Y@�; � U����*4N��jɧ��)�c���|s^��� �B��&z�0�� �>�H���F(��P�l��y�{�d Z +"�B]7�R��UEr�$���Aن�@���z 3R�+2#%�iL�)%"���hd�2ʝ�T�0�8�D��� �ԃ�CG4C��-&#�U�i��1JC�Ԓ5�A��4X&� �!�n�������ⅵ/��U8�ȋ�x�l��ę��φ���(;1,8�Zua(4��� P��%�� +T/be�p��䅰"Ki�\IW�F�l /�iom���Nܝ�e�$yi��^BT��,�D^��B��@ٮ��?���"�qQbR�4C��1�HL K��N�T#1��e#14/�m$�FW�f�,1k$�`��+�ـ�Rg��+�Jq�*�1*�QKQ4ZB*DF�_h�Bv��eJ&�pծ���"Yb*�%�SE�|N(9�\�����H�L+15h�Pbx&��J�x�j�^C����&0oZ��8���*R��b1 +@��M�)R�� l��� +Z(�<Mwm���#Z�"C��B�GYj�%�B-�����H#1_� I�\K2�J�;m0�ў覊�j�ED(,��UR{�Hz`9ӄ�@'��� +�*Fj�y�� +��#��7K�PG/5�B��2 D%7j�*�(�K(3D��:�+gt �j���ɃX��>�}VҀSV9�lC��h�L+� =X�*�GCxkȘ�z2���B-��-���b1d�'7c����N'|�ϝ���aPYkb������0L`t=���.�B=+�-��RQ(E��\��f[�݊��o��"�a�̭�Hr j��@����^Pe��� ������P� �����B�J�v/��y +WX�s��V�|�|$@HjcG��/z��}�+9�S�����{$�NPw�Bxy�F=T|t�����e��z��.������l6� `�~_�"�v��О-f�mO6���w�h�g/�Y-��4i��'����*�#�< +x)�"/���?���T��ˆ]㳥��b�Vj��J2�7D��5[��D�FKt|.oc�bƖ �� �����C��ͦeL���mD. ު��?�Q)qӱ��+�/06��{���t�?5w6M*��p�T���V�}�pZt�fB��T뼈ή�c����l��B����,/�>C����?,��'���`�4��;�����,�N��(5����E����.���� j��A��RD`�N�|��cG���<"��G�[�f;����p�����9Pd�F���LgͰjApTٹ��))��P�Q�� R`H[m�ۍL�^�q��z�bP�b\���]�-��"O'FMF�е�H ]G�g�$�݈Щ7�=%AȄmxɼ�0�߹�㢹)/C����E��(��|Em��߹�@Sc�UP�kY�0�A��/�I�k����5<�m�!+IG�,M!_D�q���7��xJ�Ss$��������mu<��RH��U�}\�\��s-�2ĸ�T�ő�o6d`^m�}�v�ju*�d�W7�&��یb���g�+`�.�|�=a?�AjQn�R����P��<�s�:(#�L�Y��'���ُg�o���P��3|��Uv<�V�9z!���3�S������B䧗|]o��k�ղzҚ_`�8�i7�ƾ�$#,��z �d;,��pyG4;�P�����dIb���vے��bTg>�9"���`� l��o�_�!:h'���n����k�� �"-Z{�����Z�C� ?����2��λ�O��x]�z��LQ��@*�U�]��l?�hs��4��E�5G��A�NL�xc����m���lT�1��)�さ�&eՔC�Z�\@^'u14^=�O�����=�bB�YYdy?���1�Jܣv�͒0$�r!�Q���bp������w]�~'�e��ڌ�Sd���ݬ�y��Dd4#Ƌ [�<��Ţ�X����6�⟙��D�HnJ�E�>�Q�Y9٘�2��ג#���<oT�]N�nFq��-h4uF�XR�0m^�/�4\���4u�/w��gi��o�l�*��]V�8H�l��]�YN�>%�U�� N��j/�ցZ��"*�rn���LE��7���VY�a��?���E�K��p��Љ{�9�YۈQ5Q@���2�mݵ=S��v�:�s�)�Y=��J��ף��G�^W��K�&�^_��vd��q��éSͥ���8!d����ڧ�UdGk�,�\�0������wKý� �{w�T��J��Q���8��B�3�� s�Õ�[у�W�@o�s���S$ 6M��<i2�eԠ&ϙL��t$ӂ�;X:ںS��qi�D�i��ۭ���ƿ�#������ #Q�a"���_�mJ�1�b8]��{�r&�f���T��p1Z�&��D;u��dB�i'?y�[�R��=>���� s����F�;��:�e.� ���Ez�'��/���|l-g̃�m���U&px�%z�!)�L� +��\ux�)��F��W� +�����3<�L1WU h�Ϫq��'�`���o�T���L��s*T%�F�T��jRU�pր�P�]�����������1��m��ɞ���.oM:9De��;�_D��El��,;\"�Y��˟l���"��ZB��P$��}9�j"�m���0}��g�[5t���i�0l�9�k)w���)�%�3w��{9�aBf�-F��`�P������M5���d ����L:*=�(���Ą��oB�e*TW.ފ1B�M�V���Q3�=�fc�G�´;zՃg���|rUn�Vw-�_t%iȆ��&XٖZ�"L$_=а��w2�9*[D�D�$ J�9()�������l�ōS�����P�6��$F��Q�Xd���w?ٴ��w|� +'�ȣ��� ���2|u�O>��(�KCT@��������J�C*��Ў�w�HOn�/ƔЙ�l�2�V�ٚ!#o7L�%3͜��al�e����l�;�!�3�ڍg�h�hU��@V$����νmhET�T%3z:m���6�E�ba�+;�� ���Ѻ�oB**$��y��|�F�w���Wh_d���w;2 dM��#.�n-e~}g���(��U�B��P^<��w<B�m�(��:�JʼI^�l�+�Qx�Z��_��.@�����4��Ը� �S ��uQ�~I�������V�B������I�0��J3�ü��x�T�܌$c��/�Z=������R ��7X� ��� +��Z��K��X�a�H�&���P��WV��2�f�<$��F��ZZ1����m[�Rd���#� Y�1z���u/2}��l���óy�4 &I��<�94s�(�u)a��\�E�/��Rh��ܻGx��c>y�?����k����V�h\�7�+Y�i1͐�pH����T�8���&��0��ʝ7>lYqi��%�t'�u��T�o�����!5�u}�)��Uϛ<3�"2!���/�*�M?�GE���hڤ�/ð��bBʶkڰ���f��k���C�e'��.�<�Լ}�i!�3-��L��M�Pg����sN�.��_nh����h��Q�ܝJeh�S��"g�4n�g�OML��ðP��< ��vg�0������ �JnsED�ZE�����ٮ�,�R���Cm }0��8��ś&���d>6I����6�%�3jl'����}ȴzte�̭����2��|��c;d쳘�F��D���ҿ�N�oȎx��!�����ƈEd+�cO�XG���ٙ��Z����:�� +���"�弻����u� `����QM'��������R�8�3@K�X�����bj�un��砘�Xm������ ���g'T���9ب��|�[���G����J��8/�,O2��a\\%<K"P']����JKW1Y�"P�ܒj�\�R&M����Sp8U��o�h9Ա3��A^�?^g9�����M����a��g�vW��,Ƹ�i��L$c�F����U�l����|�M��2���H�A�����:ex��Kg/����I �<���#.}6����� p�As�>˓M@YS�&�ŘA�Iyk��z�E��^O�q5�k(����)�;�nI9r��"�4?�3Wɫ�::Ƣ�Ӆa��U9��y ���yP�R�$d��=B��#QW1ِ[y��>+"&���0���+��Ѹ?�&u���5�8��#�{���(|���f}��VW)Ԋ�/�st��Mû��#�E���b{�(R�=i�dFB�h�9�Ěh�<�hi5N�����jI�_ ��T:K0B Ía���.��}6O4����}���3~��i��d�:�7�bk����st�x�Re�m#�#��E �|r�����p��@Ԫa��ƚ����Z_��%cQ��L������00L�lVs&>,�.��Lh����^�}�'��ζm�yB����Q��R#5^τ�H껚V;��z�̩ +�d��%�R��Y�P�<��${�a +Ze=�u�8zμ>�0?�� +�>ph�d��=�����&Z.��!���4��=�Ii#G��)q6�=������{;�a���Ǥ��w�W=�΅���t������0�E��a ������,?�'=������hсS�,n���!3���[��.�P���"���5��&��L!e{9<�x)�T�"�fW���e����&�e \ܴw���t^��du�\g���q�0�A:p��~M�*$��c�?Q�jk??_ �F9@����}��8z�:�C%�X*��p�@��L��{#�b�@�Lc�^ĩ�BG�9���{��r��y�V�1�kO��:�r ���LQ�5'���=��<���3���Eu���s��[.@��Wd]�XKK�y��Ȧ�K��Ȇ��h����N����]�Vj~��{���]�')�Ұ?���#Z.�Yճ��E�/��i���o-��@�aj�&�>X�Z��.����\�P�8Ա +�u/�ѝ�F�e5��.��$`�wtSF=f�:�Fm�v�@�QtJ����� � +�;Y�О��vF�+룳�M��G[��7F�����B����j�>�,�_oF��J�m�i�����X�y�">�!d�����G�!W�-���pd��]�����K-��*�����uG������h(ǩD[A���09���M�Y��b$��Ld�;E1A#o�pG� �2Ue Y7�Q1M���n/N!���Pw8h��̳���"���ן�E��� �� �s ��+�d����=Add +y��xJE�9��o�� ����Y��/�5���Y�}F�NK��a���5]o��R ��)�6,F�,V����]�����g@�]��V%�r:;�)���;�w�r�-�=5Z�c���+�LG�6i7pYZS��?O�� lM=ĉB*| ��m�TA�?��)<���� m/�j��nޞ'Y���Nְ�9���\�0���h���c�g�{aH��y��&�ԙ�ݻrfahC����B�&��~������>C͵��-���q��^R:;� 1þ��T�k/�j�]���Tmw�H���,��Sbw�4��43yX�:˜a g�|�<�9�{>&�ٶk�xh[ ��t{��$l �Y�T��Ը�Q��( �)ڞ���<�}�Q�Q%����f��br��ENY~�w�,y�+b�.bݠ���&͐�|���D��֫���(�Ƒ�gY{�9�B�t��Tڜ��pP��i�u!�`F���xONp~g�fZn�bS" �bٛd�\0���9��=��w��ѥ�X��9R��´&c\+'+g��N�yZ��WY�V�I6���)�K���2`i�]�c�\P�m�U���P&I`�ɛo�"+�~�:��RD��r"Mu3[�]���M�g���[,/�!��_���*d6�&���P��Ƴ`@#�N3O"�l���4�<�X��\ب2C��g����D����}�HbjE&���KLX�Kaݽ����?OԂ��Te1nt�;���U<���ò7�r�:�9�腢��ç0� +�� ��y\w��Be<�p(@B't>�chE�������ya2N�GTl �+1>����_�-�)���/�f#���t�c�Șq���`��H%�sl*s+p�o�V�E�ґ�I퀐c��um��f��v��"7$"l#� +��Xn��ۤ=�^��ل�a +}.�:�+�������.<4�!�k2��v#�;��5�B}����cȋ�z��6��j�E·�P�;M+�~~.}VA�,��b�r��w�b�<����v����8@x��a�^���� .B+l�nw:Y"Of)O.y�^�"ݜ��Ւ�g��V�=t}�s1�L��L��O�ds1�ϠO����l�')p�_�������)O��Df�dB�;Ȇ��C��q`T�6�.����2���[�\��}�� �ރImz��i����J�>�VW�U����X��� �*j{>��O��2TWC,'K8DGL 'Қ�"nxn�j UD ����w�[��� +�d;��|�L��L�L��;6I �����@��%)Yf�P���L3�r3�ߋ,�si��4��0Y=�2�z�aݐNU��wK]b]*x�jk�{�{ +��l�K0C[k�!zo������^n/-D�|�Q�A"-�Lu]n��������CZ�]��|��E��x����͕�,>]�����a�$4J[��B�2�����2�ʦ8�5�܈��`�[_Fam??�i5��N����Z�P��Q��D4iD�?`S�9��m�u@ ��lY�8��ʈ%��!��8AZ�#TQY�7�}@���29��� 3���:]p��H(�K�`|S�K��0_!���� �j�~>*�E�v�Z9��{p�4|�I-�~¾̻p"���U�����z�]����B��j�b������;��.>3��,�*� �f���\ + �LG��I@t��|�k�&ǻJQ��9�|�y4�K�Yם�xklw@2�}�1aI��J�Є�+�g3�9�?�L�zK��!0#����� +�-Gۀ!�t��)6�|i*U�%�p���e�t�d�z�˖?�p(���o�r5�33G@�����f�7�������|( �����f*�S)"J;��W��A�Mw����Z�fW�@0�h@��i�)�uR��pR�W����'θ�^v�xPD���B�D��;J@jO�%�@��� n!+�K�� ���/���� R�%SN��l��&\@-��+_��S��yQ�G��?�8� ��;-a��e�.���V���LC�� Y�F��R����� c����3�u +���2�)2 -}�uB]�Ζ``C�*��d�Z�qː�0�\טMm�j@&�?�{�?���[�x�LK{� {B9�����g�-�?�[��=" =.w�YĚ�A�WS ���F��L3�c�������gXE�З�2����B%}�-�� zyNB�s����h�p"����yD��.�������G�X������;T�l�����Y}R� +7=�%9�ѹ��zj���� �\;g +���4���a/x[�M�2�c������F�� +�������8���0�@r� ,�s+����؟V�eLY�1|�y��s��#����wUj+]»_��բ�ۊ v�σ�qO���"����߾��y�H�d3�� UC�ҟFKPd�_�r��P��7�z�Z� ��?:�^d� _�3E�c��q� +��$�#`���u L��a ]�~Pz�:�����1��-1j�e ��FW�j�7W�i�oN!��eVro��$H��3�B`��8�|�?�0�!3���`�"��w�%�erT�e���{t�Pq߲ŷ�0��G� +����2��[{"���Yf��ey��c/^h%�-����MB�a�! ���gҕ�[���n�/E�^�L�����xI�� ���uBU��) +�{K����`,QiR�gIh�� �tN7�� ����[�Y�O�46ё����y� 49\���������:�$��gʈ�A�uUt\�o�ri�/�r���U�ҝ��I���Cx����-m�C6���F'{j��rin�|!5�slLpC�U��MVϷ2#T�T���!�����}F�x��fΌ���/��Y���: X�t��?���F}��s2�5��晱�NS7����� ���q��t����� �߫p���'B�Y�@����يb�Pw�3!��W3h�� qk���]��Ef�ų5Z�L":l*�;k�٠%�#=߉,#�U�0:V������m�aIy@SBp�0A���m'��YW��`6r�X���J��/�lF!�x�LB����ЄS5*�Zɔ=<+���56���Ɖ,ޱª�b�R���<8ජ?/�����g�h�[ld�0*.��r��6���iٖ}��KbuNc��G�/��DT��h���`��^�%t�Y�$�����9G� �3�y9o�S\g��N����˯������� ��D�A��(x�M}VZ�IN�U��Țw\��`�TA�|J���g���K�U�-��]>��{<z����p������}���c�|v�����I�<�J8��^J��ɐ�$k�A����X�,�� +�iʽ�V���B�δ���|�BE�������a�;9��bք�W��w')��,7�v�UO�MqK������r<+�k��a#�>����x����y���83��@Z6���U�k�eKw!OʨLos�� �%��v��M���!\����q]�S�a�������y�F]t{�EJ%L�кs��iۓ�:�� q��D�0j��>�?Ջ 3n4D'�g���h�z�g']���^����ê�֗�5�F�����loXΠ*,���I&�>D$D�i����p+���;l�M�!q)Buhзm��v�:؈2��Հ����)ij�h��Z�N�� ����(?[d!�x�Q8��h؇=8ن+U�i�)_�,�]|tuQ�@^x���� ��\i�8�L~����!Ii}���U`��1��s��<����(o��J\��b�M��"�c���,�aX�a*�'�f��Ť;��H�[g3x�u� �Q�Ƶ���� Y`��{�n���:��1e8GA�:�$3F��]�5Ɍ��u�����P��Ϻ1�o��c���u���~��lL�A��p!�""䂳�X���k~? ��iI�К�8��du�ZK�7q�Ї�b묦�\#ӄ˙�[S��is�ᾜ͋P���h� ���6�G������Жb�H�s���F!Ng����%�ۅ�%r:K�� 3�̆4N�a�i���U X��l�՚�#i��N8������|@�%ۉN�T���m'e-+[�O��|�|Ӊ⇞������#@��og~6F�K�Kk��袊���d��p]� �)Si}m��[��P�� l6��tpS���f��iO�����w��j�m��&J��S���A���pa˱��x���إ��uP�%)QG/��h����e��;�J��<8�`h�KY�c{��� �,�hG{�,�h� +C3�G�����"5"P�9���`f'�7<~���T눇�6�ud��~��!�W`���UH!nw�~5���<��Yf��`[�p���]lGH��@ݭO0��y�5m���W��P��/��ݲ�rޜa�{�w�$�%�GĦ�H�����z����ND_ˢn�M���0� I�U��@:;"�_�M�`?��J�u4�_V�`�\�/���次��S��X���_�L��=��H�ۨݾ�l�꽚���`��^����Y�P^��p� +f���@�Po��ߪ4-T��o jɺІp�9���uI�8$�~B�m�����*�\� ���uW�� +KDh�C�ȷ� �ϲA�8�fp5��I�C3,���,�/д6 ��B�/h!TҐ7BP��ė7�m��a���Ζ�-�cV!N*k���L��!� �5�]d�hE��C����`�~?�#b����´I�S��8���-�,tJB\��rȄ\5!b�y�p�a��2�p�fe���X �g�NN$�6J*WK�x�ɠ��aahװ +BY�G����4*<��W�X�0z�w��F�y:�t6�o^T��/r�1�wJ�Ǝ�61���3iX� ��� �-A�" O&�cͩ("S� |Jꀖ�AF���B�u�����R�������T�Ϫ]d4q�R�E��R@���u��"k� ��᰻C�+�)���j�]A��>G�wB��㑀�ڰƭ.M� � [`#f�tSyu���R��z8w�b^�<��{h��Z�-��=�sT�W��@�^9�$` �ӕh�G~C�k���`2V��D �C߄�QɆ���A7]��Ȭx,:�x�v�K�-�~�����@���kp�y�}0��:�����3<$/�=���H>HN[��!9=�>R���;�1:��q:�VZL���?�Ӝ�I���{��As�w����ҳ<�u��.ħ"٣�HM�kH����X!�M��n�s�S+���� 8��[^�� *��6vlK����ph�ηg]�f3��;e�Bٺ�ih��%��P�8�ΰhحAAŤE�!D��d�)��/2����x��BHH�uߍ!H��G�Bۓ +D� C#Dܺ��ʸ���ԓ��x��"#��� �瑥R�9X�)�U�-���{��x#�;���g �͗�xO��5P:=4^ 0��e�[�iVV�����ڝ�sj�o罊q:o�v�P���*}�����ٙ6�'b�YmD0{�0w�Q/����R �s����!L���S��Ȭy^��BM!\aU�-���#3�¥d��m٨�PNgyc5rM�@�%cX�5�&-��:�:}�3�i���B�!~�M���Y�`@l�nH�AM�*�R�R0O]����5!�\{ h8����'�6a)� ��,C<[�`ĸN�_��-�˵6oi{�.�l��{�YЇY�^ �����աQ���9�F@A/��s�����٤�QD2>� ]�ZI;W� ��&�����Ŭ�"��[5�u�J�x�љ�AB��4TqpxMEh5n�߬�� �f���Vc�3�b��@�,��'�'˖|������;�M�3ω���N�����ԋB]��F�4��R�XQ����"���_�:�c�\E1M�Jzr��\oVG�je +��/R0e��6�2�H���D�:b�� �vς��*���4z��GXP�I� +n���$z�����R���#��rR ��Y�s��3$U��\�;���9/�㐞�Y�wU^�wD�j�)�Վc��`��ng��ڌn�hxv\���1!R�Ћ�w�"yW٥���"�>~����損��K��i��Ik�?�d��D�q��J�fY%"ӽ�A�9����wp3y�R��b.�nY���5�0`%�Wa�J��*U?oa�����&�����Ъ�?Dp^�w�\f\k}�Ӻ�`�4.>���jy����F4s�i �W�>��4�q�E~�M ���dd<. b!&��iH�Qq�ٚx���w�BP}]Nj��~�L-�:>J,�i��r�C+4W�_�r�g3L?% �E�V�4-D�� I6���7��Y`�*d�Ң��H��d�,$�0�ŞlR��V_ҋ�-���8���_��C�`Y�E�U����T^��6^��-�>�)-_�C� +�{o��U�I�U��'�co�ߵ��)gs5��=����N}5�Uz�̉���< T�V����t��q�r���8�f9u�8aMil�(�Q��@&s �gև��iXke�χ=,�#b����u���Ȯ�#;B ���r�U^��>(����I�L74K=����*����8[��F�n���:��r���@�U�Ϸyt��v�����]U��f�p? ½Z]r�x�����F��4;�J.�y�N�Y>�+��\C�!o�{�g>=�;��A���p�DW-<�Yb��S:����R¹���#g��4�}ߙ7��KX�j�|ƾxOk����Q��;�`i�l��+m�T�>+g�q� ��:yge�:�yI��A����K�N\�amD�Zj����v�(�Q�8&i�H�߹������w �"��m�T'�nJ��Q��6XTs���fY�� +�\Ԩ|���dm���M��.������~;H�8H�d���Fy�"�e�h������,+����ǯ�C����..�����*-p��}|܂���:�7�k�N�����A�U��V G��ͻ�������v払AYM���q+�Ԏ�M��ֺ��j|��tU��.ˤz�Q�cD�)2)�T�B�Q���m���R#r�FdF��3����0+jT��G]DU/e�P1���P�����[��*��O�v��>�2g�S #p�jtl� ��u�Ki���6>m,0�j`.��A���sU��#Ϣ(]n3)��$��D��)�ď��� ��3k�O,����̖�1kQ���)�C}�?OrA��$��[�eDž�MlA50�F����21�������D���-�E��gݞ�s���"�c�<Ԝ՝��/;}�\u�χN��9}9'9�-�/�hq/�ϛ���<�r�M�����k�MF�z1k�7��.đĥ)�ѐI��1?Z�dz��E<�m��.��'�Ы�/1�s^��Q4�%M�[XŖ�Ϲ��-Q�;�@D��?훤4�� �`��V<SƐ�J⬔�T�'�%\D��5�+��`���m%������[�'�~.�w�r� �a�i�,����!���HHn�.�dDI$4���Y�X�8>�9r��c̑��9R�#7��.aDc֪�D�֞�6��p��H���`Vr،�Ϋ�#�)5�7)�C*gC E��O�B�^�g�{c�#7vR�=Z����Z{(#7�N +Fnؓ��?�3�K8 endstream endobj 60 0 obj <</Filter[/FlateDecode]/Length 21527>>stream +H�l�M�e� +�Gs�ȳD�]5�X�2��}=*FV�*�E�����iF����+}~-��E�>,�F�=Vz)I"ԟR��w��S����:=\��У�HyT�}��w�x �O���G��ϯ�5�q"���^3'�i���ql�?��S�:Q\��-��/�����*}�6 �\���8�J�է���YŏI�y'z��}=����x�i��:�֫�0$��G�ؼ8 3M��Ә��U���S����jVV�rE�k-B�P�W�>��V�;�~���O������ *������T�"8�@w����U>�FP�i�{�,�$�.��C��JAL�{ ���5�P�9Y�-���~@ �`��B�E�<\���%��F:�[�?F�Sܡ�_H*�R?ck,4-��q�#A��#4�)D$TK���8i&��5����`����3���rx�j�G��G�����<�G"8��� �?��@G����aI��{��hZ��2���gSXո�}+w�$ m�(��7._A��V�E�j�vP�B�/b��j2�3+ܪT̐*N�0i��=L,di �e�r"M*�� ���0�OgpA6�Aݘ?���>�uq ӌ�ty�d�����v~ˬ���-BI�3j�~��N�?���=d%w��.�ԠI�ށ�� �ʨ�d;�]lVUJ5)P��N� +2�}j[ ��"����dF��f��ܱY��uyQ�^�;��̯e�t���m�ZiW�6�SZqr�~ڌ�=?��h�t-�:,v]�t��CF:��5���oaG��W���Q�N]~FS�c���;�߇|���<�v�ă�MQ���9*\�4��PY!�߉��<=�>km�D�쥴�@�**=}�ч���,b�æ����d_:h&���)�@����RDK[��<���Q�rPf�K�WyJ�,j��9Z;lI2v�k��[�|B]�WQ�خlj]��*@�е=�ɮ�ZF?���c�]ː�,WUH�\4��جj������vĴ�V���r�jL�sF=����L)��0���)��(G9�,���&[������Le���զ�K<Jku�]�k�@$r^\��u�/��]</������m�U8��~*+�`�d�Ud2 +�~4G~��L�l���ᓠ:��D�ﯣ����#�+Ēh_0%;���l��]�8�J���V�^�"y���2�����I��+����(�9( B���Eq�xN��jLe=) �,>�2مpk�٥�C^U�2{暋ɪ�o)�5�Q���m/���m���Z@�� �aBnJ)�[�d_:l�W�qH���{h��1[,� � +X)�"�[��h��Z�b��~^�����L��2��2�[�aA�$�石j IK�k�:�ǭ����&�e��8ʟ�v}��SP�> �%���g!����$L�r��d�c�rY�]�p�� 1�����>1fW�K%k<?JZ�m��> ��,�O8χx���M/������c�A'�9���C"y����,] +}^����xH0ś�{g:�^k�jo͊n-(�@1|rM(�Dz��oIc�wD�=�{K��l2g��W!�f�Ω?����Ǻ5D�Y"�3K$�f�ح�!��{� V4��A��y��!� <6�ID���$�Z �' dOM��&{��$M��Bxؒ�&[�a����RJ6�'Wp�*�J�p���}�]x�5��f�~����JK�T +2Y#�Y +A��sʬ< �]�iK���)%չ������c,쩆y�Az*}�(`��נ~��.���b��A0��v��3�0�X�*��I�-k�X�Ca�")����J衴ᐣ�c��RZ��m�S ø�|t��}|��Hg�iBW=d: +�o���| ��!P�4�Yc-E�^��N�4ٜ#�z�[8�b�m��6NC�):>k���B�;�1b؆j���+��슭Y��G�f&NR���&�JYο�?D���ĸ�YfSd H�7�{[�+]�i/K��cUi��L�c��y`���F�b�(q_T�9\i�ѝ��|�XC��Mp��4��`2!�&������Z>����1h��%�6j�Q����jC +!t�G�-Q����^3����[,#�^q�6*��-�!;_�ODц�kQ�y4w�V��E�\d�1�xp�,�� Р�����ob�)���z%d�LP��靐R��t%$n�l��x'��Aނ�f��e�SK� �F|��X>�;&!�I �!���� ++Ri���%�͙f\蟯�օ���0� +�� ���ii�w6F(Xߐ�%"��k�������X��-E�E�o��|�=TL�C�#jC^��.�S�D"�:���0���X%QYgQ� +��D�}�ב��鰼�n [��:3�%,���퐸���Y�jO�2���v%�l�R�ϩR����v�?�4^S�;p��n�x��%���h'fk�?��n]Y�*����ǓN/���.@R������@�����F�]�"�Ɉh��vG-k�D"x�zl{�;R��J;��i0�o0�ҧ�We+ۃ��w-.�8�~!�z����K��69_����l&�`���&>��0�7%X2�.�FjJc�5�*9��&��p-%�������`' +D<��R�^�DmL�V[+A�_Ԕ3:�a����ي�B�8�q����j�Iȼe��pƦ:��� +�Z��6,WY���Y^�v� �[ +�_�wޜi;�z��Jd<�eHa�te���p�����l�8�T���R�}o\ d�>�p������"�)LgӺ���5C7�݊��pG��ȃ!�v�ĴPGY7�Ѿ¬L��C���c�Ev�ȍa�U�"��r�5)�ɕ��͚�(Wt��l8��",HH� .Ơ�0g�PݡEKiL&����W��S��7��ݨ��b��Ö �� ��օ�%�-y��v�gNK�E�8>E�W{L�?sP��R}FPVi?�e��eX��"���z |"��a�mz�(��*�a!���0��Z3a#Ч���%mj�����M��l�]�R�b�b��� '�qOM��jœ�= �]N� �;��B^��Y���=Iƻ��I��{�q�qL5�qW{0�"��ep�1:��������c=�{�hO$r�r��/��B.cA�2ߥ�!�=�(a3�s�s� ��K��-ƽEm�b�@$ߢ�M.���Z�N�ݧ-l�%�}ю|D����g`�A�.�|���(�s~�L}�%���|�[P�߈]S�TbC��D`,m�1w-E��!t�35VQӝ�9L���FO�N�e�KҀ�D��z/�8��y�AT%/s��ō7��ӍP�O~iR�@22U���[��B����%��eWED6�"f$�ew� t�z����X�m�l.���v�i�{oj�d�Է�qf2h. �܅� +H�Y� ��RJ�^��0#��ӏ7,�.#%��z�o�jB����ʸy�Qf-Mee���gmcjt�I\7í�C4i�>V�u���Mw�ՠ�X�o��O��C��Ci�f�6H��Y�n���R�@F!�"&�x*B�ٶ��A��T%RY�s\S��ުă�Uߪ�q�4]PN��B�x�Gq]�I��J����g�K?��0�BV9��e�(���AP���lZQ&X����W�bf����Z`���G1̀��Th�@��#�����sU[����0�CCC~�.��I���η�h( d%>��m�(~kL#-����/2=��mB��V�Ǫ��)�t��L����Jbm��uZQ�n�E��D̤���[J%�G��ՑFEi�^+Unb��=M�gc��=�P��u�yh3:�`:�3�: �l�_��Si��Iȁ���VHҌ�1(VS>��=����<�Y���lU���-�9�uߓ�O�e��c���ѩ +��~K�֨ +`'�O.�Q��)�bߊ�k�f��1XRJ��b=���뿞�U4ٞ�YZ�{Gy{B���p�g��-{���d��){��9�&[���-Zu��=K�9�Ug��u��XG���J��l��α���%�b�0�C��6iwDz��nќy8*�4l0T�b(�,��,N�U���Kh|0 +�V� ����,��(1J�;�4�V��1��.P�W�?'z��Q�F�[�# j0�۪ +Y�c��e�����>�l�r��XR/�H���qc\鯱k"�"�S5��"Sf��"�8K�W�]gy��dK$�[�{��-��z��ÿ��:�"�%r�qv>�*"�eP@"0��I,��Xb�5����iG#��x!�DN�R�D"8������z�D�f��H@F �H�ʫ��8��.G�e�9��b~;�X�+GIVC�#J"�"j`*�x�;�%QX3�娉�Nd�uK��AL�.�WKß� �oq#5�1J �@��{�����"1t�=���0y6��'�{����x5�Y��:{�KB��Ԛ�&�پV��j"�dR�j$Q/��u%Q�-h}oI�Ce���\���Sʶ$�V;��2�$�}�����⫈�j�V|+�t6�#4�R�,VP��"���y+;�I��X�M������Yy�ɥ�V�`Q�LR,XHF�K��"Ýh8�0�p=��.� +U��d�L���PR��Z�sÔ6����t��P���|�ΒT�D}��]B�5Yᖱ�o U�������Amce�&�b����P�����z-؋�A<�_Ǎ��M�9�S���G��^�����&*�j�9@v7}��8p����F�i�Ǫ��wwx�>�s���^p��c�e��W�'��8�lB4�6�t�A��"�罦� ���57�Y�j��n�]�tl�U�ܲr��:Z +�DOQ4����"�;��R�Z�m6JeW���Z���6�".��.�3��YMW���rq���\ʀ�N�p���V�GH*ԡ'��F{8�Mӟ;j�<"��G-�����duE��.^^���%�a�4s�����I�;����u�9wU�M��3��U�t��}'�-YI������RZq������ d���E����t V��%����@ HXm5�l#���|���؟$��wĐ�jo�K(<|��,Y�O����MMe�ȃdGVnM���'Ֆ_��vSC�mH��=6.������]j��"����u�iI�u���B�����"#��k���s0���]w�f dz:�Әۨ���3S@��"f�@DJh��y��� qG�s/����!��-؛&c說��A�V Pek���F.������jɑ,7b'�;��@�B�uy�[���Y��7ɐ��z�B�L}B�#�}n��s�7*�S��� *��N�{��s�Xbjd�5R�=�0�[�ؖ:�^%l`]D8a��d�W� +���l�-Kj�� A�����{�i�2J�5��2�E��-��6�}0�![m�b��k��J1ڕV +��UG�$V +b�5Do1J�R�Ei�� ��l,:,��.�{0�u��f��H�٪,XST�(�d�����7��&ǡ�16Q�ę�+Y���I}� �*����@�"JÑ^=��C�!��T�M>�U�4�AŢ�$cJ��n���츉��@�/��0� ��ca����YPj�.V����M���6`ØS���� ��pd�Q�����`7�� .�T��*f+C!�/�s��.|�00]v�Vk����[EY ͌AM�?�]o�"��8SŻK��r�[��`���.���a�@��2]�*�?5���0(�v���5KzBXu�zM��j9��F`(?D��I����,�1r��9O=��A���2�Ha�s2�-2�X�]�a_���F�>?^�\R�H�I�=�}�SK�{�hSI�jo@z�CVr,�ay�ZӦ�Ԩ+od�6.{���N���;S΅��):�MIv��*hmd���%��`���-����-��e�e��j��^��/�#�Lb� |Df��n�}�vϗ�$���d&��~�QLG��iܫ����ko贁\:Y�ټU7�l��U7_��Ku�oh*�� +��B���_��˜���4�l�Kz���uQ�� t�z��%<���mI���[���|��ڊ�Όa��&��qt>4����bR���;�F�w�m�$�F��?����H� [�ɦ"���`����4��"/I��[*�m��rT��hN"����ǿ�" c,�/��B�~a��C�C棜��h���"6J�{�a�[:}��&���uv����}2oi�qR}}��@u�k 4������cͷj��up���"�����h��`˄9��k`OJ�z?H�����m�e����슒�5/��3��nj �H>*�[�Zr�r%O�r�����vF��*ls�2����:-@���[���𬑃I��p@c��r\�Q�B>j�v���U��Ʌ�.5D�+���q�P�"��K�m>��|�%���ʄUBJLB�0�ҜlaPT�и݉��A�0x���`�MS�Z�L�Ign&�KNE2�X�ݧ���k��rVM�KC�@$�vA�f[�w���6�����8o�[)��kY:�3�>�"��(�U���|�� =�p���%j��A���2d�|L�Yp��B���&�jM*�y�6.~�R>�@9x ��l~8�ᇃ~�����@$����{�6?�%�1�и�����e~ �N�ݭ�H�$��8�^�4z�Y���k��X�f+��ً N�=��������#2��9�>ڵ#��S W{��"�g�n�A��vc��"x����tΗ+iBͷ�'�6��I��9��v+��5 +��ܮ�_i������o���s�3N���|c(������^la����xp�b=��i �@��B�]K D�-�h�j��M:Â�i�{�[����#Zؐ�@!����9T&�N�΅�=F�D?GP갩��_�&]q��&a2x%.$`Bo��V;@Z��-An�QW�4X?n W!5�W��d;��!��.�Q\H�*d�َ:��d~RB�bRA:����b���8K���N'����$� bM_���<�S4�W��)]f�6Ap�D�;lec�4�Z�"N<+�wb0٢@�#��Z[ �C�� H�>���LS�ǫ����r1Yo����}ܫ*���H��U ���UY�fP�^_�,,6n� 2�]�(�4�"�6�)�l}�kw c��D+�U��N�o�7]e�~�}�G惘��_?��^�{�C�"zh���ز�|&� fJZ�U�A?��p��lj|�žP6 nE2��P�5�g.����&nn��붼����_�Hຎ�P A��EB��~6�a�[@��N���Q[�5�d�Z���P��8�;��U�\0�y#��G[���G�/��U��.o�� jDZ�����@�� |�EJ��s�e]������G{(��>PhP���3gT�5l�*�q��ht��e;� w1��<���6�Dl���������kjGq���"d�����ig�S�{hw�]��0l4�꯰�{�i��_Zm?t�ʚ6�D�lK���[%ǪX�\C���c��g�g��/��}����om��M����ᘲ��R�yx�Hʓ�j��&�1�8G;Lv��̥���L���ju�������j�[�r"��oa��5~ �]�F5���y����L����P���) �Lq\��6T��24a���̧�RܗHWD<�P�)��٘��V����0U��8��ɜ�r]YҒF�ĎZWF��G�V�z��6'��� +�G[�!H;�F���T!ts�%+ur +Ǘ��d�C�]� D��.1�"S��p��]�==�X�����g\e#5J� .+�U�ڱ�EU�a42�F,�z*�X0:jι �����w�|�Oig�bu� �6�����y oT����j(��fGi�+#�>�C������Lb�gT!�����3��:x(�����u(�(�ޚ��J1��8�C=j���!' +i�(��Z|/}�;�_[��~R�懼%$�e�x*^8Q�DB�I%D��3�R�>3,#zJA�`U�����3Ppe ���dW9r]�܊7`I�S�T�z�b�?�=�Ȓn&�� � HA7`p��l?��n�6�8t�J���_ݧ_��A�,Q#x"?�}�I�����eڣ|B�����[O��U�������ꄛ�R���˨�q��2(��CI�c������.�H�$��p�L!#rN#j�N:F#�1*��BExoFR�=�����!lO9j�>&ㄇ��. �yw��0�HI~�l�.�\Cb�rGu(pk�y����GF�!��Nh��u@�c/=�*!FR;����B�,�U��S�{�QN�g>/ڏ"m�{�TYp�)�P{S��p�RKM�&��ey_�U�M5�腰�N��#���F�Y] $��Aآ]��23�rX���,A�?`=�-*F�bH�6�� �K)yA����vdu��`�ݯ�c����+�� �* `p/��&N�V����P���(��ꗟ�ӭ��m�,C9�dS �M�����R����4,��ی��M�(�L�!v j�1�;�H�Ha��ڥ��A,�W�?��&bd�~���@\%��� ����Vߢ bd0�1h���z-�J����}i��Rݲ��1,��^�qeh�S��7��A��C�8���x5�Uh�Do�X2�6j���X����DD_���94X�0�3���Y�]oJ��S�8�����/ +[����J2ɥ�.��5�����k� +�y�Na� �Y��0Q:��9��5��I��e�� ;{����zR(�E�~��rN�%H�-��F ~F�Cx"awL3#=ԟ��Erc���z���=�g�V�����H���@d�pK:���M�n(��:[}��D��Qs��]yX��¬��r<��k����M��$�<;�,�-�{_DQ�,�����i����4���{G�' +{�O�.?����VŃH`'��ڴ�]��1��[t���I�x�g1h��6�d����)�Ѫ���L��U�U� �3���%�S��`m�~�f˳�i ��<���G�Q`dl�b���� �9��]�< �[5m������uv����,��j�]J7�}�Z]�hۄV�Bж��ޝFj +�S%���R�"�Lॼ*:O��=܇b��`�`s8��FmIr���r���V��8���)����b��#�?r�p���(�WI~��S*f���m��1����tM�"�l��e����wK]K��i����z �ƹ�M��@�hۘw�����y�)���͢�8 +�Ze2��c0���M��.�X���5r�φ������ޛ%���9$��Ѻ\o� +�}��*�E))���Fc9ʾ|�CQm_̀; + ���囷�N���]�#r%����N��-���c�~K�Ow����`�*2E*x65'l�+^T�4��S�'{�zp���4�y��}�־�������Lw9&�hIKl��,����Ko�'��+"���-�DKB[*�;�$,��Z_�10��ݔ�����h�&��0rΈ yP����I�t� u�<$���{OEhA�xp�L�P�\ԅS�^e�Fz=Db��x\��b�Lw��7+v�/FZ���"Q�J {�]t_YN$��@�/��� +j�D�����Ze����mYl�K���:y/<�-@�)c:�&��?i)$&F�]��Q8�ЌP����S��D��b�T�`e�#�Ō��0�ƒ�áKʇZ��Vb�P��ɔ��;n���>�PTyG�a�E�ȵ#���b�l<�ݎs�>3VRpM�,ְ2�i��46b8ciUl +`J�$~��=�S�3�;m�[bG�ի*�rNW�#B�г��,��b]�2�FNyy����G�$~��0ç��:Ո�oE���,h�9Y�̨a�ğ�a*���Wp�C���F[i)�ep���ɏ:y<Z��<ē#�{��(���tuV��T�'Co�Ӛ�B����(jYy)'1`��{K%�L�Բ�ղY-S�O�_�J[Y�q6��H�2Nl�y�N��a3�~q˪�.@�?�qӝ;\�(��b�)��ALݣ�i�$H��A�NG����*�5�'�\��ڡ����%�҆�� e~ӗ8�- +"DΠ���)�9������~�8��v��F���B-��]�9��C���%!�c;!%�}�$���z��C���R���`�I�DT�FJ�۪̜#�Ns�gC&���w��P�� �np��kӳi�c#l���-�^ӊ�C��~�O�-���3b"�C1x����L1�5�M�-i� Ua���%P(� ��'h�n<,QO��4q +��M�b���D�� L�Rߖ��)ZBy�������b9&��u?���՞�Au��W��*�N�*k\>�@�g}��,�b����bDȪ���vu¿L��i���Ƃ,���1�f&�&�~Ԥ���k��IvL`K���s�{mN�a$�� �M�(���=K]k�j]��r��[��ף�̹�&>�H3v1�!<�Ӣ���� +� ��J��!ʼ�;`:�2�}m����p�(�6OLW�B@�+�;q=K�^�R� �ń�$"/N5��~�RА��Y�T�qG��!,��2bM&�r�N���nR�[�U�z[�.E��>��Q�Ng�0�U�<�:bF����7\p�E�,p�]��`H��� p�EL���Xa>�])�л�#�O!�`�HӰ�}�&�D�㏕$��3��c�&t3 �P�E̵��NS�U���\��䣈b�/f4w���w���q +�X��ݔ3*�yӫ<���X��>{QǼw)�����!K��Ũ�;j�a��8p��+bw��U ��%��x8Ǟ�waW����2�@A(�Ͻ��p:oN�ב��|举p9^�(�58����.s�Zn��{����Rm�Ŋ���5�������Cb��Ecl}<ژ�d��n�]�BO���:���U���ɑ��j��h��B�b'���q]M�E���m�I+�!@�e�_��\"Fb���J1N��]��r�P����Ӆ�ܪ|*���#n�N���/�8OT���F�b��謶�?3�<a��o��SyZ������G$��sw���j��CD�%�Po�Ǥ �'���/]��g���]��\+j��9�P}�Z�-�hZ��c�Dꘊ���|�v�ϭ�(�<���$Ռ����zZ�[Q��$n��ZRj�p���w2�bJ1��NM��ڷ���[���mP8{ut2Š+d���p�����Xb��pQq!�k1f�Pƚ:�0Y.]F䎔�r�ղ�dDױ���S��E����H���/���B9D�Z��' ?�)��l/u�ث��W���Yr�N��\�?�����qEQ}���"�ZZH!��/ag��q���X��d����(�slC�b�8�j�Ti����U�kE��_��"�ko�����u�0�NK:�_���r���muD�=���4���U�r +#8ʩe�o�ͯ�U��l,��;;K3�ȏ!,K����l��؟�@1_�=�y��w���oi)4P���*�%�7M�%�`z6�U�c��?5�(��h�Ͽ#g�����#H}�J�u�?a"�W�t!/�wW�Z�)�ޚ� +�Y��N��S�,y�S�����~*�e\Hɥ���?i�'MS�Z(���j�����F4��4��>b��n�<228- ����b^�xp9`��2���'홪h!�9�u�TM�Z|G�w����C�M��ly_��kw5�8Ҫ�����]5�7�ng�,J��#�G������k1mz�10��rS���y�c� +�RY����b�z���a�V�--�:��F{♺ݔ�i{:��/��,�zgǾ6K��N=���ق_B�#��uD��ֺ�М$�N��,N7#@�Ї�ڗ��jv>$f��h���$�*���ъDH?���?���S?f�$B�=K���W������v�ޟ9y����5u�d(�9i���E:��ȼ������i���_8�����6���n$�hq- +'��L_�P/�&;L_��77m�ߓ⑰��m�M���4Vٰ7�d�����\IVC� rx��M�]}��|c���"+��^�N�����I}��Ä�<�*�����s7M\Q�Ħu���6=D� ��M+��k�H4�T���YD��;��q�.���� ���z�0'dI�Ja�A�.'v�㑕,�6� +@�����z����>�6sq���D�+�"ST���ϝ�v6������p@�Q�-�X7�MR��"x�dlB��ٺ�.ns��6+;����Y�E��S�=9���M��U�����8�A���:�LG�������A��h��2� !T����LH�^�q��y1rC]<_���6I5I��X͈�/i��~�4bg���MU溜uC�C�uYܲܲ����y� +�3O�mtn��t��g��^F�vP�FD�T��(�ʽ�0$��$�c)ğ�"]3���C�]�3f���U�*0�iQ%�����9��2�rj������ڣ�N&�O���"]��sH�n�.�*s� +Zl(�MEh4���k8�����Q���|�T<��3L�#I~���d��8����ШC��U`��Z�v�#\���U�^��8��-���J��.��~j�� '*K�Y�rēKh����e�E�ha�)ݚܪ��� <ţ��%DF�]�l�c��@��8�<�م�.�qL#��1����j�A=�������=��<�l�u�.�LD�z����ĝ�S$I*W����'��[���/�x<����'5Ua<���Y{Z����P�6�c`iQD��C5:��~6�=x +����]�ˬU@Y"�P:#�@�%��<�t4V��H˭3ʼh�`_:�]# �{E�1���d�� ��l�Rn�n�]*pz�3M4� +��M�,� shL�K��9i�Zw2^[k�HD�A7m��9m�� ����l^����u�P~��ο1v�G)�+�3�T���ݽa�S��N�U��&�i��_)�$;� +�����ѱaЎ@|�'G ���RNF��}�ŧ�T�ʭ�_�/�� �� �n�F`��jha=�¡�����]���VHÎ�vF���ƻ����|�����f;�|0���SaAoY� +��nB����>D;'t��}2|0�#�7�}�����"]����@7}}`g�Y��<��\��}��|/7 M (��N���8�"0����o�\���=�(#�<����(R�|� ��c"��Fl����po��Φs)���go�ՙE���} �zJM +��!��nݗp�8�T�'�`(8��Wns+��Sx\Dbt�/��3�(T��}�E��RsD#� ��Y�.��7y��L�y��1<$��c_��4�6�����<3�a���d�S�{��"��V0L|�^y�:P9��(���A���������)�=����]���L�����8n1�;����wj#w���A�L1��{0��[�_�� +�z2�gj$/{�8C���Ű}��#�G v��!���Ҷ =��l��e'exG>��#�P�gOIc��b��x��6�IHL�Tb��ki���m��!���V�<� �o�8���\(ع�~�P�O�I��ϩ�k�&�����5X�"wo���K�h���`G����S�K ���*��kǡ����!Ap��ve�;��]��oI��z �����QB��R_k��Y&Qp�����oŚ��x�����0`��$���*�s��&�a-�!as�"s�M!�۴�X����k��i���� �ĉ��#d;�b�T������C�B�I,�җ�7�KP2+P�t5{G&DW�T����*�{�9�����Xۑ����3ds�[��!3,���0b��$��`?%��T����u4"I-�@v5�[ѽt�4��A�<�$;�H�}mo(B8s�<&E��ţ�I���T�;�0����_~V�+�E�.QAIv'x <� L��`�[]����Ym3�%��/��S����c w�9Z�1�[?�I�D^��.lck�Ľn���ش���clQ�������<]+��4�M*�ߺ7%=�r���d +D�a�X���MeHD�fh�@��JO��������� +�C�J1�4��j��)�7� U[�K��f�q��}zP�ts�@GQ��ԨvTk��O�]���7=C��2�o��.���Dz{�@̡b���ݏ}������[�G��09�H +E�J���\)r<���(�� +1�>�K�dZ��K�����g�� JpM�<HLE_��k��]a�[|�vP�<o�n����#S���{uR~�*5\�~Qv��ؾw���91��;,��xR��G����wE�i�C��Pd�JZ4���_&C%���i\Y}M'�1��[����P�o9�<�����^e:ZRD6�4#����F!�gjҁ��n��.�F�Z]����0���L0b�S�q SmNG?�Eh��̫h?KJ3K3�5����o�N�æg�9�S�P!��E�j� +��>ƒZ3#$~9��~m�δ��Lcd�[P-=wcq�Aؔ�ᖎ����`�b7�1��Ŗ@�.U� +�@�EsW���m�:��%y��Rd~0��PX:�Rn��@�͢ �r�D����K�+#&� M�t�r�W��`\Z�iȆƾ�aA�n�؞���Ad�X��UX�r_z.�ġd1�����:9L�N�ԏ5o���D�d�f����"Q������k@�����@h��ɽ�Qr���ה��r����j���X�o��1� ~�ڒ5����"��W���c\�*(�\+�!��4s��b�����'+r����Z��&RS��!-8�k�x���#V-Ư/����$EkB�Rަ<rr%ӱ*4"�|���t�ث}�V�0햱�H���E;��b%�Ʊ�/I���DB��ܭ� "P���wO�Ҷ +�b;�����7���>a��1d%i.M�c(�ƶ�'HT�mT�-�o���;�I��/��扬{m�Y/Zb�X�ˢ#@>&��!�mY�@@�B�T�k�MW3[� ۂ��LJ�1���P��a�j~6ݬpN��k,�i_�#u=̌)H,Bg�Y���FK+�'��t�;wwZp�z��1�5��8~`�b�[w�A����"��Ts�S*�����"�s�ϵ=-�i6���wdD�<�q�5�N���]���i6�o�"d�P���s���c[��H'�MJ�5�=�E��iEG�-��K��)�n~��>*1��r��J� �U<3�4�#(J�32 �����$"�0���-e�y�s��� X�N�C���^=Vo���/ec��AR��[��o@}���L����=���(_-/3z�4%���+G���t�V�g�>J�%9SP��� a����w�����F�`dU��5�ϠzN�ꜙ�.5lt��S�Y�$>�\��RF�D�K�x$��~LY�D�I��CA�t��ytO<c�~[�F��vg$��H��ګ�r��q D���F���2N[EFLmP"u�۶;�Ŀ��<��ͷ����A�C}4��F}8M�{�Y��9*:��.~I��o�ز�_ЄQ�2��(�zu�l"e��%� +�Sl�,����6��`���8��*�k���� ����=y-�s�ĚB�j�k]���.3�F\Io��X��q)��#(�E<bN߃8:��9�!t�OV]_��7S ���߶,��$�:rT<Pk���#z@�z +���� KEvZ%d 8���ɇb�Ng9��_�b�?�]�ԗ����I�* \�����]q��>1�R2ȭrɹT'|լ<��/=R��Ml�� +&�r�p����^�S�����Qe]���ޜKU��6ڭ(�Ym@�B���3i��}��#�7��P'о�I�_��+����.���Y� +$��~J����>�МGC �����\�h�RВ�[7��й$wD�M#R��X ʤ!"-�[�ft��_���F��?�G��M'0�&C��`mx�Ow_ KG0zf%���9q�A�ڪ8 +�2=���=�um?���9��o8b��T��ֽ�m��NA�X��K���H�C՜�X�<�#��1� ���ȕ�XiB���"A�Vd!^?Vk-�K��)Ve�x<ɂ���Glsњϰk�tiP#,K��=ˑW�{�O$ֈ瞴 �@�)�����#(�Xln;�mh�x1�a�i�D� �Hdh��`����tSو��=�X|� +�:ިx�b`RM�����˼)OzJ1�gal?L��\��i�=]BLE�UD���{��,����\ۓ�M|�gT�ҭQNڒ�U�V�lSH +�}l�������ۮ7� �SmS��=��#"1W�h���A��l��z�����?�I�{ؕ��vt���1�BY��sd�kP����_����dW;v;\��� �9�� O� ���x���ԓ�L���@�PUC1�����;@ȫ0F@M�Nl=Ճ7��0�ߋ�o�5��e��]QVhw�T�S n�J$�}���H�}��OGO]qCМ8�8��wDW�8R���j5�?�BP��� w��uYA Ud�V�y.��eG���Lfw{�M���$���l҉�Z�#��F�]*�E-��[�fJ�U�Q���ʼn�ǯY6lA"��<�K=?�5e��'|�{�6�PD�z]v a:=Д�d1`xk�T�@��)�KaI��V�� �;.ps���k�H�H-*�aØ��b��U"u"�6��-�m���_7x�z� �}��z�je�����+g�^ +�QL��p�Kո�h{�<�g�⎾�uI�0�#&���bа+<��4�s��.^%�5Z���R��Z�UP�k,�t�$W"���t���n���Bq��Bq�&�%D�U_C.s��q|j̫(%��lv�L�4?4)b�]����$hYLj8y��"�x^��v/�h�G7��'{7�a�?C،���)T�� 4�4��@�%�O�p9D�ԉ���>g�O��)���U�m��I�`V�]Hl�7R*' I�j$:�׆��=� E��;\*�zB[�q�K�l��9ri=����P���#�<S�.�g�in8�\A9����-ja,ﶲ +5˵�%�=�0d�� 3��Dݚ%���8�HU��A"R�h"�}�'sA�W1I���J�m� +L�2ov\+��7�$K�(]�n �,����i��{E�)y�����ښ�h=Jh��I��h�5{qB�E�9���.�-خ�; a˛!�aK�����˔�}@��io�{_#���:����Nƅa��c�1�B|W�т��B�.���a��f`�x��]��R`w��!���� +� �a�{^0 +��;��t@�w�N �l�]�����7[���A���.�)��)�54&c�y�/;���km��j�yP�?���i:��Q��Y 8#��&�4̬�ƣ���S��(ƽӈ���k:M��Z��80���֨ʐ]�#�n��L����A��'I�y*��Y��kʿD�X��6��9��~�t�t8�+�M��2҄�-u���Z���g��5Ey,�1��{�Lꥠh��gi�����k�G�t̕@���oOX���g�-�wz�來����<3�cӧV7����X��2y��옎�$�ݶ��^Im�9���a�i�Ӳ�ň�1l5=u�PpG/�����2k��A$ݢC�U�ݽ�u�O��3�ȳfE�fH���-�&�~��{ ˣ���� +=eA�!��sHlƒ�<-L�km?�v��QȗZjL՟%hä�9g+O��(9m�2�P�[2`�B��r{��k� + `�(��r"��@�"?�NJ�lv�d'+Rm"�,�2^�y�}}�ɦ��G���'Sɳ�����,�Gb戴l����直T�yc+9�]����8Z$É��)�e����9 +9s+�Ņ����1PT�0�l��ef峨7� �R^C>�G���kP5)ŏ��}��#���*�sI.@��H%��Eu��"��V1]�m��I!sM?3���Y�u�@���ƶ>c�7*��.t�?��K�����u|u;%<������cۮ*�R��}s�OD�����u�7t��)�x$�C� P݂�8g��w��D�;iOA� ���R�v�;h�'��t�\�@P#s4#��T4\�C��I��M�B�����<��bLj����}�1~t 4��e!��l�R7A���ǩ��h������V� ��bu��,Y&`� ��f&�KJ!P�nE�wZ����(��qLX.��o�)c��M���{�8RU�˷e��'�WV�]6����a�u7�2�����APC\���W�c�˹ݥ�U�IEp&�a��_X��kf٩��T���{�~B2(B����aJ� m'3�\hһ���$�x�>��s���� ��b6UT��.vBV�I�t�{�@;C��9�.��:���i>�q��w>B� :S�s��l���5(ֹ~�~ב�8�`Pڮ���;�B�ޅ_˴G�Q�-ԓ3�#R�ө�x�(��O{�}z�7G(���'��J ���tj"s��q,J�NJT�{}�%�-����U�5A��[��YU��o�>�̢ � +ק��tV�w&�cq�$1oQ*��;f���=Ȯd����R��"�h�)�1H����8"d1ͰTl���Z~�Bd]�� �$P�]�_�pG�&Bs�B3�9m�������������F�#��s�{ �4.+��C3�<�N��^�V"xZ�����D=~���<|Ǥ*ӄ���X�(N�qZ#j-�:� �=<x4�2�� �"�X�tk��1�4�,���\�g��R���k.�<{E����-_�<��ґA��%]������p\.~0k}��P�K�)���0�P�;W�����苮�k2�Kݙ٪�n�-�'s�m�Z}(�w<A�>��N����ǧ�=u*h�jP9�>�Q���:(���o�H ʐe �;B�s�������|䠐)��)�y�e��#)liJ�Q�8O���Rv����-)�45��mPB�hW�k� ՞2 �gH���o*,*{ٔ2��_"�Bh8��u�tԬAW��g.���&��5k��J�>K&��� r�Ί7s����ݎ�#Ζ�U��d�~Φ7�m�tDM���:�0~��o�\'�ї�y0B��P�K◐v%OӇ�2U��:��k��% ���]e�uA��?��b2�b?�K��,����87����,b�����9R���L��TWW�� W���Xj��U����1v7�^`5{�hT ]�{��H�_��@QR�]�d�"�z���,H��ON������)t��c����D�f�"P�&Y�\�A�9�z�}�(��u�0F�%��,n�дI��v�~!%��n�CF�aV�1�L�`�Em*jf;�R�Ѥ�t��&n�B���*5N�a)ml�{����I�A�jm6�A"#����Y�r]��=�� +�>���>��i�R�;Z-J����`<��ɲF��j��o����(߈5��7���7o�-�'t�$M F �-y�%�^T���=�De�5�4��{7듽> ���^�5C_:+�ͼA3�G�@�R���.��z)ƇR�C��p2�ət̅ �H0mQ�~����� ��d� aȻ:E�$�U�k��_���aG/Ic�2��r�>C>f�H +C���r���y�V�6�)܇T�LY��z��z��jc�j�T�͓f�>ʱ�K^�&�A��|r�/~fR�?#ܴ����T��8�{k�Ȱ��r��][1א,ec幗�2)-�wMFo���ܪ� ���x��/D�0�A�U��!G�R�R�e@[�����D]F_�9G�s��(>���-�E�>F 0�r��ҧ���2���}N�+;b^��v�7����7F�-Њ�-��\]�����_;�p���^��%�r��<}7ގ����XDq�]��P�*a�" &�i[�S��Τ` ���:7�42;����A����1���m�g����=D3{��ӂ�Vg���rE�T�Q�Q +��&�C�'۩�ݙ���ۤ���ݫ�jz���R��~ �#xT|�Q�F�E53�2u��D-HM���l\F$��E0.�=C�1�F�d���L&����ARĢ+|z6�h�V�n༳��_)�P ���B��lf�I6i��i��3�T�+���"C����6��P��d��c�LcS�C?R�P%�*��*�G���������H����vg_$�n���Hh�H�)�ƹͶXd�`�����_�V��V$�|�P�m��Lfa'�(+�B𝢌��j�����*YC�Ź��5�T�G�i�(A�p�H�O`ҫ�����WuIT \Co\�� ���a�n׳������Q7\���Řf��� +ne9��M�@������(8t� � G*����-��IY����ǘu�G���.�\���N���Dm�X���K�;F��i~��=n�b )L��%q5i��?�N�Gjj�u���=R���X�,�f�����b>|Wib�z��(�"��N3����:Kb���#t#1u+Gq���#(A��n����D� +����1(UK�1I�5��2h�@���ji���*�7�ʆ_H���I�E�"z�`���!j����H��N�?�Í���Qa�>�d t"��n':���"�ЪK��y�A�b eN'"��1l���$^k���(�����!��� f"īƈMRV�Ww@�>M��I� �[��C�Y.҇I�]�9��,���EH^�AC�*�� �)��]�W��c��&܍,x��ZRHo$�u�<co��GAS�D��� +�����m��'��d�H8�m�F\Z�v�z�%�1�#'�3������{y�u���L�W�@�`>���$G�ż&�!rZw`�B��X(��ﰧ���2�{k�J���������p��pv���}u��������������Z�C��W�/� $�[� +D 0|����/ο}�]\��~u~{��������������7�\�����t�϶G�cx���?Ģg�}�9~����G;��xy���x���x����o�w�?�?��������i����'F��Z~v�껯0�i� endstream endobj 15 0 obj <</Intent 16 0 R/Name(Hintergrund)/Type/OCG/Usage 17 0 R>> endobj 18 0 obj <</Intent 19 0 R/Name(Hilfslinien anzeigen)/Type/OCG/Usage 20 0 R>> endobj 21 0 obj <</Intent 22 0 R/Name(Vordergrund)/Type/OCG/Usage 23 0 R>> endobj 25 0 obj <</Intent 26 0 R/Name(SCAN)/Type/OCG/Usage 27 0 R>> endobj 26 0 obj [/View/Design] endobj 27 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 13.0)/Subtype/Artwork>>>> endobj 22 0 obj [/View/Design] endobj 23 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 13.0)/Subtype/Artwork>>>> endobj 19 0 obj [/View/Design] endobj 20 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 13.0)/Subtype/Artwork>>>> endobj 16 0 obj [/View/Design] endobj 17 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 13.0)/Subtype/Artwork>>>> endobj 39 0 obj [38 0 R 37 0 R 36 0 R 35 0 R] endobj 61 0 obj <</CreationDate(D:20100708150700+02'00')/Creator(Adobe Illustrator CS3)/ModDate(D:20100921131033+02'00')/Producer(Adobe PDF library 8.00)/Title(EKUT_WortBildMarke_W_RGB)>> endobj xref 0 62 0000000003 65535 f +0000000016 00000 n +0000021147 00000 n +0000000004 00000 f +0000000005 00000 f +0000000013 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000117691 00000 n +0000118341 00000 n +0000118372 00000 n +0000117766 00000 n +0000118225 00000 n +0000118256 00000 n +0000117850 00000 n +0000118109 00000 n +0000118140 00000 n +0000000000 00000 f +0000117925 00000 n +0000117993 00000 n +0000118024 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000251 00000 n +0000052594 00000 n +0000052669 00000 n +0000052753 00000 n +0000052828 00000 n +0000118457 00000 n +0000021199 00000 n +0000021574 00000 n +0000053473 00000 n +0000053360 00000 n +0000051557 00000 n +0000052033 00000 n +0000052081 00000 n +0000053244 00000 n +0000053275 00000 n +0000053128 00000 n +0000053159 00000 n +0000053012 00000 n +0000053043 00000 n +0000052896 00000 n +0000052927 00000 n +0000053547 00000 n +0000053755 00000 n +0000054851 00000 n +0000062476 00000 n +0000075641 00000 n +0000096091 00000 n +0000118503 00000 n +trailer <</Size 62/Root 1 0 R/Info 61 0 R/ID[<46FD392554B042B38CAFD91F0092E898><24AEDBD9D06A452B99A853D33D1917D3>]>> startxref 118691 %%EOF \ No newline at end of file diff --git a/pointprocesses/lecture/beamercolorthemetuebingen.sty b/pointprocesses/lecture/beamercolorthemetuebingen.sty new file mode 100644 index 0000000..c4a5da6 --- /dev/null +++ b/pointprocesses/lecture/beamercolorthemetuebingen.sty @@ -0,0 +1,61 @@ +% Copyright 2007 by Till Tantau +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +% +% See the file doc/licenses/LICENSE for more details. + +\usepackage{color} +\definecolor{karminrot}{RGB}{165,30,55} +\definecolor{gold}{RGB}{180,160,105} +\definecolor{anthrazit}{RGB}{50 ,65 ,75 } + +\mode<presentation> + +\setbeamercolor*{normal text}{fg=anthrazit,bg=white} +\setbeamercolor*{alerted text}{fg=anthrazit} +\setbeamercolor*{example text}{fg=anthrazit} +\setbeamercolor*{structure}{fg=gold,bg=karminrot} + +\providecommand*{\beamer@bftext@only}{% + \relax + \ifmmode + \expandafter\beamer@bftext@warning + \else + \expandafter\bfseries + \fi +} +\providecommand*{\beamer@bftext@warning}{% + \ClassWarning{beamer} + {Cannot use bold for alerted text in math mode}% +} + +\setbeamerfont{alerted text}{series=\beamer@bftext@only} + +\setbeamercolor{palette primary}{fg=karminrot,bg=white} +\setbeamercolor{palette secondary}{fg=gold,bg=white} +\setbeamercolor{palette tertiary}{fg=anthrazit,bg=white} +\setbeamercolor{palette quaternary}{fg=black,bg=white} + +\setbeamercolor{sidebar}{bg=karminrot!100} + +\setbeamercolor{palette sidebar primary}{fg=karminrot} +\setbeamercolor{palette sidebar secondary}{fg=karminrot} +\setbeamercolor{palette sidebar tertiary}{fg=karminrot} +\setbeamercolor{palette sidebar quaternary}{fg=karminrot} + +\setbeamercolor{item projected}{fg=black,bg=black!20} + +\setbeamercolor*{block body}{} +\setbeamercolor*{block body alerted}{} +\setbeamercolor*{block body example}{} +\setbeamercolor*{block title}{parent=structure} +\setbeamercolor*{block title alerted}{parent=alerted text} +\setbeamercolor*{block title example}{parent=example text} + +\setbeamercolor*{titlelike}{parent=structure} + +\mode +<all> diff --git a/pointprocesses/lecture/lifadaptfano10-100ms.pdf b/pointprocesses/lecture/lifadaptfano10-100ms.pdf new file mode 100644 index 0000000..6ca0f33 Binary files /dev/null and b/pointprocesses/lecture/lifadaptfano10-100ms.pdf differ diff --git a/pointprocesses/lecture/lifadaptisihdistr08-100ms.pdf b/pointprocesses/lecture/lifadaptisihdistr08-100ms.pdf new file mode 100644 index 0000000..18496c0 Binary files /dev/null and b/pointprocesses/lecture/lifadaptisihdistr08-100ms.pdf differ diff --git a/pointprocesses/lecture/lifadaptisihdistr65-100ms.pdf b/pointprocesses/lecture/lifadaptisihdistr65-100ms.pdf new file mode 100644 index 0000000..b654602 Binary files /dev/null and b/pointprocesses/lecture/lifadaptisihdistr65-100ms.pdf differ diff --git a/pointprocesses/lecture/lifadaptreturnmap10-100ms.pdf b/pointprocesses/lecture/lifadaptreturnmap10-100ms.pdf new file mode 100644 index 0000000..a3a37b5 Binary files /dev/null and b/pointprocesses/lecture/lifadaptreturnmap10-100ms.pdf differ diff --git a/pointprocesses/lecture/lifadaptserial10-100ms.pdf b/pointprocesses/lecture/lifadaptserial10-100ms.pdf new file mode 100644 index 0000000..aa5eb8e Binary files /dev/null and b/pointprocesses/lecture/lifadaptserial10-100ms.pdf differ diff --git a/pointprocesses/lecture/liffano16.pdf b/pointprocesses/lecture/liffano16.pdf new file mode 100644 index 0000000..a424589 Binary files /dev/null and b/pointprocesses/lecture/liffano16.pdf differ diff --git a/pointprocesses/lecture/lifisih16.pdf b/pointprocesses/lecture/lifisih16.pdf new file mode 100644 index 0000000..f44ecc5 Binary files /dev/null and b/pointprocesses/lecture/lifisih16.pdf differ diff --git a/pointprocesses/lecture/lifisihdistr08.pdf b/pointprocesses/lecture/lifisihdistr08.pdf new file mode 100644 index 0000000..4908f72 Binary files /dev/null and b/pointprocesses/lecture/lifisihdistr08.pdf differ diff --git a/pointprocesses/lecture/lifisihdistr16.pdf b/pointprocesses/lecture/lifisihdistr16.pdf new file mode 100644 index 0000000..5c4fb3f Binary files /dev/null and b/pointprocesses/lecture/lifisihdistr16.pdf differ diff --git a/pointprocesses/lecture/lifoufano16-100ms.pdf b/pointprocesses/lecture/lifoufano16-100ms.pdf new file mode 100644 index 0000000..36520b5 Binary files /dev/null and b/pointprocesses/lecture/lifoufano16-100ms.pdf differ diff --git a/pointprocesses/lecture/lifouisihdistr08-100ms.pdf b/pointprocesses/lecture/lifouisihdistr08-100ms.pdf new file mode 100644 index 0000000..0df3beb Binary files /dev/null and b/pointprocesses/lecture/lifouisihdistr08-100ms.pdf differ diff --git a/pointprocesses/lecture/lifouisihdistr16-100ms.pdf b/pointprocesses/lecture/lifouisihdistr16-100ms.pdf new file mode 100644 index 0000000..82bf23a Binary files /dev/null and b/pointprocesses/lecture/lifouisihdistr16-100ms.pdf differ diff --git a/pointprocesses/lecture/lifoureturnmap16-100ms.pdf b/pointprocesses/lecture/lifoureturnmap16-100ms.pdf new file mode 100644 index 0000000..f1ed8c6 Binary files /dev/null and b/pointprocesses/lecture/lifoureturnmap16-100ms.pdf differ diff --git a/pointprocesses/lecture/lifouserial16-100ms.pdf b/pointprocesses/lecture/lifouserial16-100ms.pdf new file mode 100644 index 0000000..ec087f6 Binary files /dev/null and b/pointprocesses/lecture/lifouserial16-100ms.pdf differ diff --git a/pointprocesses/lecture/lifraster16.pdf b/pointprocesses/lecture/lifraster16.pdf new file mode 100644 index 0000000..73eedea Binary files /dev/null and b/pointprocesses/lecture/lifraster16.pdf differ diff --git a/pointprocesses/lecture/lifreturnmap16.pdf b/pointprocesses/lecture/lifreturnmap16.pdf new file mode 100644 index 0000000..a81a348 Binary files /dev/null and b/pointprocesses/lecture/lifreturnmap16.pdf differ diff --git a/pointprocesses/lecture/lifserial16.pdf b/pointprocesses/lecture/lifserial16.pdf new file mode 100644 index 0000000..8c07e80 Binary files /dev/null and b/pointprocesses/lecture/lifserial16.pdf differ diff --git a/pointprocesses/lecture/pifisihdistr01.pdf b/pointprocesses/lecture/pifisihdistr01.pdf new file mode 100644 index 0000000..d485e57 Binary files /dev/null and b/pointprocesses/lecture/pifisihdistr01.pdf differ diff --git a/pointprocesses/lecture/pifisihdistr10.pdf b/pointprocesses/lecture/pifisihdistr10.pdf new file mode 100644 index 0000000..bb0f667 Binary files /dev/null and b/pointprocesses/lecture/pifisihdistr10.pdf differ diff --git a/pointprocesses/lecture/pointprocesses.pdf b/pointprocesses/lecture/pointprocesses.pdf new file mode 100644 index 0000000..be38025 Binary files /dev/null and b/pointprocesses/lecture/pointprocesses.pdf differ diff --git a/pointprocesses/lecture/pointprocesses.tex b/pointprocesses/lecture/pointprocesses.tex new file mode 100644 index 0000000..ff49cb2 --- /dev/null +++ b/pointprocesses/lecture/pointprocesses.tex @@ -0,0 +1,412 @@ +\documentclass{beamer} + +%%%%% title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\title[]{Scientific Computing --- Point Processes} +\author[]{Jan Benda} +\institute[]{Neuroethology} +\date[]{WS 14/15} +\titlegraphic{\includegraphics[width=0.3\textwidth]{UT_WBMW_Rot_RGB}} + +%%%%% beamer %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode<presentation> +{ + \usetheme{Singapore} + \setbeamercovered{opaque} + \usecolortheme{tuebingen} + \setbeamertemplate{navigation symbols}{} + \usefonttheme{default} + \useoutertheme{infolines} + % \useoutertheme{miniframes} +} + +%\AtBeginSection[] +%{ +% \begin{frame}<beamer> +% \begin{center} +% \Huge \insertsectionhead +% \end{center} +% \end{frame} +%} + +\setbeamertemplate{blocks}[rounded][shadow=true] +\setcounter{tocdepth}{1} + +%%%%% packages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[english]{babel} +\usepackage{amsmath} +\usepackage{bm} +\usepackage{pslatex} % nice font for pdf file +%\usepackage{multimedia} + +\usepackage{dsfont} +\newcommand{\naZ}{\mathds{N}} +\newcommand{\gaZ}{\mathds{Z}} +\newcommand{\raZ}{\mathds{Q}} +\newcommand{\reZ}{\mathds{R}} +\newcommand{\reZp}{\mathds{R^+}} +\newcommand{\reZpN}{\mathds{R^+_0}} +\newcommand{\koZ}{\mathds{C}} + +%%%% graphics %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{graphicx} +\newcommand{\texpicture}[1]{{\sffamily\small\input{#1.tex}}} + +%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{listings} +\lstset{ + basicstyle=\ttfamily, + numbers=left, + showstringspaces=false, + language=Matlab, + commentstyle=\itshape\color{darkgray}, + keywordstyle=\color{blue}, + stringstyle=\color{green}, + backgroundcolor=\color{blue!10}, + breaklines=true, + breakautoindent=true, + columns=flexible, + frame=single, + captionpos=b, + xleftmargin=1em, + xrightmargin=1em, + aboveskip=10pt + } + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{document} + +\begin{frame}[plain] + \frametitle{} + \vspace{-1cm} + \titlepage % erzeugt Titelseite +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame} + \frametitle{Content} + \tableofcontents +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Point processes} + +\begin{frame} + \frametitle{Point process} + \vspace{-3ex} + \texpicture{pointprocessscetchA} + + A point process is a stochastic (or random) process that generates a sequence of events + at times $\{t_i\}$, $t_i \in \reZ$. + + For each point process there is an underlying continuous-valued + process evolving in time. The associated point process occurs when + the underlying continuous process crosses a threshold. + Examples: + \begin{itemize} + \item Spikes/heartbeat: generated by the dynamics of the membrane potential of neurons/heart cells. + \item Earth quakes: generated by the pressure dynamics between the tectonic plates on either side of a geological fault line. + \item Onset of cricket/frogs/birds/... songs: generated by the dynamics of the state of a nervous system. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Point process} + \texpicture{pointprocessscetchB} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Homogeneous Poisson process} + +\begin{frame} + \frametitle{Homogeneous Poisson process} + The probability $p(t)\delta t$ of an event occuring at time $t$ + is independent of $t$ and independent of any previous event + (independent of event history). + + The probability $P$ for an event occuring within a time bin of width $\Delta t$ + is + \[ P=\lambda \cdot \Delta t \] + for a Poisson process with rate $\lambda$. + \includegraphics[width=1\textwidth]{poissonraster100hz} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Interval statistics} + +\begin{frame} + \frametitle{Rate} + Rate of events $r$ (``spikes per time'') measured in Hertz. + \begin{itemize} + \item Number of events $N$ per observation time $W$: $r = \frac{N}{W}$ + \item Without boundary effects: $r = \frac{N-1}{t_N-t_1}$ + \item Inverse interval: $r = \frac{1}{\mu_{ISI}}$ + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{(Interspike) interval statistics} + \begin{itemize} + \item Histogram $p(T)$ of intervals $T$. Normalized to $\int_0^{\infty} p(T) \; dT = 1$ + \item Mean interval $\mu_{ISI} = \langle T \rangle = \frac{1}{n}\sum\limits_{i=1}^n T_i$ + \item Variance of intervals $\sigma_{ISI}^2 = \langle (T - \langle T \rangle)^2 \rangle$\vspace{1ex} + \item Coefficient of variation $CV_{ISI} = \frac{\sigma_{ISI}}{\mu_{ISI}}$ + \item Diffusion coefficient $D_{ISI} = \frac{\sigma_{ISI}^2}{2\mu_{ISI}^3}$ + \vfill + \end{itemize} + \includegraphics[width=0.45\textwidth]{poissonisih100hz}\hfill + \includegraphics[width=0.45\textwidth]{lifisih16} +\end{frame} + +\begin{frame} + \frametitle{Interval statistics of homogeneous Poisson process} + \begin{itemize} + \item Exponential distribution of intervals $T$: $p(T) = \lambda e^{-\lambda T}$ + \item Mean interval $\mu_{ISI} = \frac{1}{\lambda}$ + \item Variance of intervals $\sigma_{ISI}^2 = \frac{1}{\lambda^2}$ + \item Coefficient of variation $CV_{ISI} = 1$ + \end{itemize} + \vfill + \includegraphics[width=0.45\textwidth]{poissonisihexp20hz}\hfill + \includegraphics[width=0.45\textwidth]{poissonisihexp100hz} +\end{frame} + +\begin{frame} + \frametitle{Interval return maps} + Scatter plot between succeeding intervals separated by lag $k$. + \vfill + Poisson process $\lambda=100$\,Hz: + \includegraphics[width=1\textwidth]{poissonreturnmap100hz}\hfill +\end{frame} + +\begin{frame} + \frametitle{Serial interval correlations} + Correlation coefficients between succeeding intervals separated by lag $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)} \] + \begin{itemize} + \item $\rho_0=1$ (correlation of each interval with itself). + \item Poisson process: $\rho_k =0$ for $k>0$ (renewal process!) + \end{itemize} + \vfill + \includegraphics[width=0.7\textwidth]{poissonserial100hz} +\end{frame} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Count statistics} + +\begin{frame} + \frametitle{Count statistics} + Histogram of number of events $N$ (counts) within observation window of duration $W$. + + \vfill + \includegraphics[width=0.48\textwidth]{poissoncounthist100hz10ms}\hfill + \includegraphics[width=0.48\textwidth]{poissoncounthist100hz100ms} +\end{frame} + +\begin{frame} + \frametitle{Count statistics of Poisson process} + Poisson distribution: + \[ P(k) = \frac{(\lambda W)^ke^{\lambda W}}{k!} \] + + \vfill + \includegraphics[width=0.48\textwidth]{poissoncounthistdist100hz10ms}\hfill + \includegraphics[width=0.48\textwidth]{poissoncounthistdist100hz100ms} +\end{frame} + +\begin{frame} + \frametitle{Count statistics --- Fano factor} + Statistics of number of events $N$ within observation window of duration $W$. + \begin{itemize} + \item Mean count: $\mu_N = \langle N \rangle$ + \item Count variance: $\sigma_N^2 = \langle (N - \langle N \rangle)^2 \rangle$ + \item Fano factor (variance divided by mean): $F = \frac{\sigma_N^2}{\mu_N}$ + \item Poisson process: $F=1$ + \end{itemize} + \vfill + Poisson process $\lambda=100$\,Hz: + \includegraphics[width=1\textwidth]{poissonfano100hz} +\end{frame} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Integrate-and-fire models} + +\begin{frame} + \frametitle{Integrate-and-fire models} + Leaky integrate-and-fire model (LIF): + \[ \tau \frac{dV}{dt} = -V + RI + D\xi \] + Whenever membrane potential $V(t)$ crosses the firing threshold $\theta$, a spike is emitted and + $V(t)$ is reset to $V_{reset}$. + \begin{itemize} + \item $\tau$: membrane time constant (typically 10\,ms) + \item $R$: input resistance (here 1\,mV (!)) + \item $D\xi$: additive Gaussian white noise of strength $D$ + \item $\theta$: firing threshold (here 10\,mV) + \item $V_{reset}$: reset potential (here 0\,mV) + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Integrate-and-fire models} + Discretization with time step $\Delta t$: $V(t) \rightarrow V_i,\;t_i = i \Delta t$.\\ + Euler integration: + \begin{eqnarray*} + \frac{dV}{dt} & \approx & \frac{V_{i+1} - V_i}{\Delta t} \\ + \Rightarrow \quad V_{i+1} & = & V_i + \Delta t \frac{-V_i+RI_i+\sqrt{2D\Delta t}N_i}{\tau} + \end{eqnarray*} + $N_i$ are normally distributed random numbers (Gaussian with zero mean and unit variance) + --- the $\sqrt{\Delta t}$ is for white noise. + + \includegraphics[width=0.82\textwidth]{lifraster16} +\end{frame} + +\begin{frame} + \frametitle{Interval statistics of LIF} + Interval distribution approaches Inverse Gaussian for large $I$: + \[ p(T) = \frac{1}{\sqrt{4\pi D T^3}}\exp\left[-\frac{(T-\langle T \rangle)^2}{4DT\langle T \rangle^2}\right] \] + where $\langle T \rangle$ is the mean interspike interval and $D$ + is the diffusion coefficient. + \vfill + \includegraphics[width=0.45\textwidth]{lifisihdistr08}\hfill + \includegraphics[width=0.45\textwidth]{lifisihdistr16} +\end{frame} + +\begin{frame} + \frametitle{Interval statistics of PIF} + For the perfect integrate-and-fire (PIF) + \[ \tau \frac{dV}{dt} = RI + D\xi \] + (the canonical model or supra-threshold firing on a limit cycle)\\ + the Inverse Gaussian describes exactly the interspike interval distribution. + \vfill + \includegraphics[width=0.45\textwidth]{pifisihdistr01}\hfill + \includegraphics[width=0.45\textwidth]{pifisihdistr10} +\end{frame} + +\begin{frame} + \frametitle{Interval return map of LIF} + LIF $I=15.7$: + \includegraphics[width=1\textwidth]{lifreturnmap16} +\end{frame} + +\begin{frame} + \frametitle{Serial correlations of LIF} + LIF $I=15.7$: + \includegraphics[width=1\textwidth]{lifserial16}\\ + Integrate-and-fire driven with white noise are still renewal processes! +\end{frame} + +\begin{frame} + \frametitle{Count statistics of LIF} + LIF $I=15.7$: + \includegraphics[width=1\textwidth]{liffano16}\\ + Fano factor is not one! +\end{frame} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame} + \frametitle{Interval statistics of LIF with OU noise} + \begin{eqnarray*} + \tau \frac{dV}{dt} & = & -V + RI + U \\ + \tau_{OU} \frac{dU}{dt} & = & - U + D\xi + \end{eqnarray*} + Ohrnstein-Uhlenbeck noise is lowpass filtered white noise. + \includegraphics[width=0.45\textwidth]{lifouisihdistr08-100ms}\hfill + \includegraphics[width=0.45\textwidth]{lifouisihdistr16-100ms}\\ + More peaky than the inverse Gaussian! +\end{frame} + +\begin{frame} + \frametitle{Interval return map of LIF with OU noise} + LIF $I=15.7$, $\tau_{OU}=100$\,ms: + \includegraphics[width=1\textwidth]{lifoureturnmap16-100ms} +\end{frame} + +\begin{frame} + \frametitle{Serial correlations of LIF with OU noise} + LIF $I=15.7$, $\tau_{OU}=100$\,ms: + \includegraphics[width=1\textwidth]{lifouserial16-100ms}\\ + OU-noise introduces positive interval correlations! +\end{frame} + +\begin{frame} + \frametitle{Count statistics of LIF with OU noise} + LIF $I=15.7$, $\tau_{OU}=100$\,ms: + \includegraphics[width=1\textwidth]{lifoufano16-100ms}\\ + Fano factor increases with count window duration. +\end{frame} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{frame} + \frametitle{Interval statistics of LIF with adaptation} + \begin{eqnarray*} + \tau \frac{dV}{dt} & = & -V - A + RI + D\xi \\ + \tau_{adapt} \frac{dA}{dt} & = & - A + \end{eqnarray*} + Adaptation $A$ with time constant $\tau_{adapt}$ and increment $\Delta A$ at spike. + \includegraphics[width=0.45\textwidth]{lifadaptisihdistr08-100ms}\hfill + \includegraphics[width=0.45\textwidth]{lifadaptisihdistr65-100ms}\\ + Similar to LIF with white noise. +\end{frame} + +\begin{frame} + \frametitle{Interval return map of LIF with adaptation} + LIF $I=10$, $\tau_{adapt}=100$\,ms: + \includegraphics[width=1\textwidth]{lifadaptreturnmap10-100ms}\\ + Negative correlation at lag one. +\end{frame} + +\begin{frame} + \frametitle{Serial correlations of LIF with adaptation} + LIF $I=10$, $\tau_{adapt}=100$\,ms: + \includegraphics[width=1\textwidth]{lifadaptserial10-100ms}\\ + Adaptation with white noise introduces negative interval correlations! +\end{frame} + +\begin{frame} + \frametitle{Count statistics of LIF with adaptation} + LIF $I=10$, $\tau_{adapt}=100$\,ms: + \includegraphics[width=1\textwidth]{lifadaptfano10-100ms}\\ + Fano factor decreases with count window duration. +\end{frame} + + +\end{document} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Non stationary} +\subsection{Inhomogeneous Poisson process} +\subsection{Firing rate} +\subsection{Instantaneous rate} +\subsection{Autocorrelation} +\subsection{Crosscorrelation} +\subsection{Joint PSTH} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Renewal process} +\subsection{Superthreshold firing} +\subsection{Subthreshold firing} +\section{Non-renewal processes} +\subsection{Bursting} +\subsection{Resonator} + + +\subsection{Standard distributions} +\subsubsection{Gamma} +\subsubsection{How to read ISI histograms} +refractoriness, poisson tail, sub-, supra-threshold, missed spikes + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Correlation with stimulus} +\subsection{Tuning curve} +\subsection{Linear filter} +\subsection{Spatiotemporal receptive field} +\subsection{Generalized linear model} + +\begin{frame} +\end{frame} diff --git a/pointprocesses/lecture/pointprocessscetchA.eps b/pointprocesses/lecture/pointprocessscetchA.eps new file mode 100644 index 0000000..95a12ae --- /dev/null +++ b/pointprocesses/lecture/pointprocessscetchA.eps @@ -0,0 +1,500 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: pointprocessscetchA.tex +%%Creator: gnuplot 4.6 patchlevel 4 +%%CreationDate: Sun Oct 26 14:09:12 2014 +%%DocumentFonts: +%%BoundingBox: 50 50 373 135 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext true def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Rounded true def +/ClipToBoundingBox false def +/SuppressPDFMark false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +/BackgroundColor {-1.000 -1.000 -1.000} def +% +/vshift -73 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 373 50 lineto 373 135 lineto 50 135 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.6 (September 2012) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse + clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +Level1 SuppressPDFMark or +{} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (pointprocessscetchA.tex) + /Subject (gnuplot plot) + /Creator (gnuplot 4.6 patchlevel 4) + /Author (jan) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Sun Oct 26 14:09:12 2014) + /DOCINFO pdfmark +end +} ifelse +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +2.000 UL +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 1.000 UP +LTb +LCb setrgbcolor +LTb +1.000 UL +LTb +gsave 6208 824 N 0 -32 V 121 32 V -121 32 V 0 -32 V 1 PolyFill +6208 824 M +0 -32 V +121 32 V +-121 32 V +0 -32 V +528 824 M +5680 0 V +stroke +2.000 UL +LTb +0.00 0.00 0.00 C 10.000 UL +LT0 +LC0 setrgbcolor +0.00 0.00 0.00 C 910 573 M +0 503 V +1412 573 M +0 503 V +2123 573 M +0 503 V +2413 573 M +0 503 V +2717 573 M +0 503 V +3167 573 M +0 503 V +4033 573 M +0 503 V +4650 573 M +0 503 V +5685 573 M +0 503 V +1.000 UP +stroke +2.000 UL +LTb +LCb setrgbcolor +0.00 0.00 0.00 C stroke +grestore +end +showpage +%%Trailer diff --git a/pointprocesses/lecture/pointprocessscetchA.gpt b/pointprocesses/lecture/pointprocessscetchA.gpt new file mode 100644 index 0000000..bace1a7 --- /dev/null +++ b/pointprocesses/lecture/pointprocessscetchA.gpt @@ -0,0 +1,62 @@ +set term epslatex size 11.4cm, 3cm +set out 'pointprocessscetchA.tex' + +set border 0 +set lmarg 4 +set rmarg 1 +set tmarg 1 +set bmarg 1 +set xrange [0:11] +unset xtics +set yrange [-0.7:1.8] +unset ytics +set label 1 at graph -0.07, graph 1.1 + +set arrow 1 from 0, 0.5 to 11, 0.5 head filled +set label 2 'Time' at 11, -0.3 center +set label 3 "$t_{1}$" at 0.724649, -0.6 center +set label 4 "$t_{2}$" at 1.67586, -0.6 center +set label 5 "$t_{3}$" at 3.02389, -0.6 center +set label 6 "$t_{4}$" at 3.57466, -0.6 center +set label 7 "$t_{5}$" at 4.15121, -0.6 center +set label 8 "$t_{6}$" at 5.00412, -0.6 center +set label 9 "$t_{7}$" at 6.64549, -0.6 center +set label 10 "$t_{8}$" at 7.81657, -0.6 center +set label 11 "$t_{9}$" at 9.77964, -0.6 center +plot '-' w l lt 1 lc rgb 'black' lw 10 +0.724649 0 +0.724649 1 + +1.67586 0 +1.67586 1 + +3.02389 0 +3.02389 1 + +3.57466 0 +3.57466 1 + +4.15121 0 +4.15121 1 + +5.00412 0 +5.00412 1 + +6.64549 0 +6.64549 1 + +7.81657 0 +7.81657 1 + +9.77964 0 +9.77964 1 +e +unset label 3 +unset label 4 +unset label 5 +unset label 6 +unset label 7 +unset label 8 +unset label 9 +unset label 10 +unset label 11 diff --git a/pointprocesses/lecture/pointprocessscetchA.pdf b/pointprocesses/lecture/pointprocessscetchA.pdf new file mode 100644 index 0000000..dcc5228 Binary files /dev/null and b/pointprocesses/lecture/pointprocessscetchA.pdf differ diff --git a/pointprocesses/lecture/pointprocessscetchA.tex b/pointprocesses/lecture/pointprocessscetchA.tex new file mode 100644 index 0000000..302b6a9 --- /dev/null +++ b/pointprocesses/lecture/pointprocessscetchA.tex @@ -0,0 +1,95 @@ +% GNUPLOT: LaTeX picture with Postscript +\begingroup + \makeatletter + \providecommand\color[2][]{% + \GenericError{(gnuplot) \space\space\space\@spaces}{% + Package color not loaded in conjunction with + terminal option `colourtext'% + }{See the gnuplot documentation for explanation.% + }{Either use 'blacktext' in gnuplot or load the package + color.sty in LaTeX.}% + \renewcommand\color[2][]{}% + }% + \providecommand\includegraphics[2][]{% + \GenericError{(gnuplot) \space\space\space\@spaces}{% + Package graphicx or graphics not loaded% + }{See the gnuplot documentation for explanation.% + }{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}% + \renewcommand\includegraphics[2][]{}% + }% + \providecommand\rotatebox[2]{#2}% + \@ifundefined{ifGPcolor}{% + \newif\ifGPcolor + \GPcolortrue + }{}% + \@ifundefined{ifGPblacktext}{% + \newif\ifGPblacktext + \GPblacktexttrue + }{}% + % define a \g@addto@macro without @ in the name: + \let\gplgaddtomacro\g@addto@macro + % define empty templates for all commands taking text: + \gdef\gplbacktext{}% + \gdef\gplfronttext{}% + \makeatother + \ifGPblacktext + % no textcolor at all + \def\colorrgb#1{}% + \def\colorgray#1{}% + \else + % gray or color? + \ifGPcolor + \def\colorrgb#1{\color[rgb]{#1}}% + \def\colorgray#1{\color[gray]{#1}}% + \expandafter\def\csname LTw\endcsname{\color{white}}% + \expandafter\def\csname LTb\endcsname{\color{black}}% + \expandafter\def\csname LTa\endcsname{\color{black}}% + \expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}% + \expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}% + \expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}% + \expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}% + \expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}% + \expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}% + \expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}% + \expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}% + \expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}% + \else + % gray + \def\colorrgb#1{\color{black}}% + \def\colorgray#1{\color[gray]{#1}}% + \expandafter\def\csname LTw\endcsname{\color{white}}% + \expandafter\def\csname LTb\endcsname{\color{black}}% + \expandafter\def\csname LTa\endcsname{\color{black}}% + \expandafter\def\csname LT0\endcsname{\color{black}}% + \expandafter\def\csname LT1\endcsname{\color{black}}% + \expandafter\def\csname LT2\endcsname{\color{black}}% + \expandafter\def\csname LT3\endcsname{\color{black}}% + \expandafter\def\csname LT4\endcsname{\color{black}}% + \expandafter\def\csname LT5\endcsname{\color{black}}% + \expandafter\def\csname LT6\endcsname{\color{black}}% + \expandafter\def\csname LT7\endcsname{\color{black}}% + \expandafter\def\csname LT8\endcsname{\color{black}}% + \fi + \fi + \setlength{\unitlength}{0.0500bp}% + \begin{picture}(6462.00,1700.00)% + \gplgaddtomacro\gplbacktext{% + \csname LTb\endcsname% + \put(6329,421){\makebox(0,0){\strut{}Time}}% + \put(910,270){\makebox(0,0){\strut{}$t_{1}$}}% + \put(1412,270){\makebox(0,0){\strut{}$t_{2}$}}% + \put(2123,270){\makebox(0,0){\strut{}$t_{3}$}}% + \put(2413,270){\makebox(0,0){\strut{}$t_{4}$}}% + \put(2717,270){\makebox(0,0){\strut{}$t_{5}$}}% + \put(3167,270){\makebox(0,0){\strut{}$t_{6}$}}% + \put(4033,270){\makebox(0,0){\strut{}$t_{7}$}}% + \put(4650,270){\makebox(0,0){\strut{}$t_{8}$}}% + \put(5685,270){\makebox(0,0){\strut{}$t_{9}$}}% + }% + \gplgaddtomacro\gplfronttext{% + }% + \gplbacktext + \put(0,0){\includegraphics{pointprocessscetchA}}% + \gplfronttext + \end{picture}% +\endgroup diff --git a/pointprocesses/lecture/pointprocessscetchB.eps b/pointprocesses/lecture/pointprocessscetchB.eps new file mode 100644 index 0000000..d204109 --- /dev/null +++ b/pointprocesses/lecture/pointprocessscetchB.eps @@ -0,0 +1,736 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: pointprocessscetchB.tex +%%Creator: gnuplot 4.6 patchlevel 4 +%%CreationDate: Sun Oct 26 17:34:18 2014 +%%DocumentFonts: +%%BoundingBox: 50 50 373 237 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext true def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Rounded true def +/ClipToBoundingBox false def +/SuppressPDFMark false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +/BackgroundColor {-1.000 -1.000 -1.000} def +% +/vshift -73 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 373 50 lineto 373 237 lineto 50 237 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.6 (September 2012) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse + clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +Level1 SuppressPDFMark or +{} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (pointprocessscetchB.tex) + /Subject (gnuplot plot) + /Creator (gnuplot 4.6 patchlevel 4) + /Author (jan) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Sun Oct 26 17:34:18 2014) + /DOCINFO pdfmark +end +} ifelse +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +2.000 UL +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 1.000 UP +LTb +LCb setrgbcolor +LTb +1.000 UL +LTb +gsave 6208 3165 N 0 -32 V 121 32 V -121 32 V 0 -32 V 1 PolyFill +6208 3165 M +0 -32 V +121 32 V +-121 32 V +0 -32 V +-5680 0 R +5680 0 V +stroke +2.000 UL +LTb +0.00 0.00 0.00 C 10.000 UL +LT0 +LC0 setrgbcolor +0.00 0.00 0.00 C 910 3029 M +0 272 V +502 -272 R +0 272 V +711 -272 R +0 272 V +290 -272 R +0 272 V +304 -272 R +0 272 V +450 -272 R +0 272 V +866 -272 R +0 272 V +617 -272 R +0 272 V +5685 3029 M +0 272 V +1.000 UP +stroke +2.000 UL +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 2.000 UL +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 1.000 UP +LTb +LCb setrgbcolor +LTb +1.000 UL +LTb +gsave 6208 2043 N 0 -32 V 121 32 V -121 32 V 0 -32 V 1 PolyFill +6208 2043 M +0 -32 V +121 32 V +-121 32 V +0 -32 V +-5680 0 R +5680 0 V +1291 1929 M +121 32 V +-121 32 V +-260 -64 R +-121 32 V +121 32 V +910 1961 M +502 0 V +590 -32 R +121 32 V +-121 32 V +-469 -64 R +-121 32 V +121 32 V +-121 -32 R +711 0 V +206 -22 R +84 22 V +-84 22 V +-122 -44 R +-84 22 V +84 22 V +-84 -22 R +290 0 V +216 -23 R +88 23 V +-88 23 V +-128 -46 R +-88 23 V +88 23 V +-88 -23 R +304 0 V +329 -32 R +121 32 V +-121 32 V +-208 -64 R +-121 32 V +121 32 V +-121 -32 R +450 0 V +745 -32 R +121 32 V +-121 32 V +-624 -64 R +-121 32 V +121 32 V +-121 -32 R +866 0 V +496 -32 R +121 32 V +-121 32 V +-375 -64 R +-121 32 V +121 32 V +-121 -32 R +617 0 V +914 -32 R +121 32 V +-121 32 V +-793 -64 R +-121 32 V +121 32 V +-121 -32 R +1035 0 V +stroke +2.000 UL +LTb +0.00 0.00 0.00 C 10.000 UL +LT0 +LC0 setrgbcolor +0.00 0.00 0.00 C 910 1907 M +0 272 V +502 -272 R +0 272 V +711 -272 R +0 272 V +290 -272 R +0 272 V +304 -272 R +0 272 V +450 -272 R +0 272 V +866 -272 R +0 272 V +617 -272 R +0 272 V +5685 1907 M +0 272 V +1.000 UP +stroke +2.000 UL +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 2.000 UL +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 528 268 M +-63 0 V +stroke +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 528 460 M +-63 0 V +stroke +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 528 652 M +-63 0 V +stroke +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 528 844 M +-63 0 V +stroke +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 528 1036 M +-63 0 V +stroke +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 528 1228 M +-63 0 V +stroke +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 2.000 UL +LTb +LCb setrgbcolor +0.00 0.00 0.00 C 528 1276 M +528 220 L +5801 0 R +0 1056 R +-5801 0 R +1.000 UP +stroke +LTb +LCb setrgbcolor +LTb +1.000 UL +LTb +gsave 6208 268 N 0 -32 V 121 32 V -121 32 V 0 -32 V 1 PolyFill +6208 268 M +0 -32 V +121 32 V +-121 32 V +0 -32 V +528 268 M +5680 0 V +stroke +2.000 UL +LTb +0.00 0.00 0.00 C 3.000 UL +LT0 +LC0 setrgbcolor +0.00 0.00 0.00 C 528 268 M +382 0 V +0 96 R +502 0 V +0 96 R +711 0 V +0 96 R +290 0 V +0 96 R +304 0 V +0 96 R +450 0 V +0 96 R +866 0 V +0 96 R +617 0 V +0 96 R +1035 0 V +0 96 R +533 0 V +1.500 UP +stroke +2.000 UL +LT0 +LC0 setrgbcolor +0.00 0.00 0.00 C 910 268 CircleF +1412 364 CircleF +2123 460 CircleF +2413 556 CircleF +2717 652 CircleF +3167 748 CircleF +4033 844 CircleF +4650 940 CircleF +5685 1036 CircleF +1.000 UP +2.000 UL +LT0 +LC0 setrgbcolor +1.00 1.00 1.00 C 910 268 CircleF +1412 364 CircleF +2123 460 CircleF +2413 556 CircleF +2717 652 CircleF +3167 748 CircleF +4033 844 CircleF +4650 940 CircleF +5685 1036 CircleF +1.500 UP +2.000 UL +LT0 +LC0 setrgbcolor +0.00 0.00 0.00 C 910 364 CircleF +1412 460 CircleF +2123 556 CircleF +2413 652 CircleF +2717 748 CircleF +3167 844 CircleF +4033 940 CircleF +4650 1036 CircleF +5685 1132 CircleF +1.000 UP +2.000 UL +LTb +LCb setrgbcolor +0.00 0.00 0.00 C stroke +grestore +end +showpage +%%Trailer diff --git a/pointprocesses/lecture/pointprocessscetchB.gpt b/pointprocesses/lecture/pointprocessscetchB.gpt new file mode 100644 index 0000000..e1cda52 --- /dev/null +++ b/pointprocesses/lecture/pointprocessscetchB.gpt @@ -0,0 +1,204 @@ +set out 'pointprocessscetchB.tex' + +set border 0 +set lmarg 4 +set rmarg 1 +set tmarg 1 +set bmarg 1 +set xrange [0:11] +unset xtics +set yrange [-0.7:1.8] +unset ytics +set label 1 at graph -0.07, graph 1.1 + +set multiplot + +set origin 0, 0.7 +set size 1, 0.3 +set label 1 '\normalsize Event times $\{t_i\}$' +set arrow 1 from 0, 0.5 to 11, 0.5 head filled +set label 2 'Time' at 11, -0.3 center +set label 3 "$t_{1}$" at 0.724649, -0.6 center +set label 4 "$t_{2}$" at 1.67586, -0.6 center +set label 5 "$t_{3}$" at 3.02389, -0.6 center +set label 6 "$t_{4}$" at 3.57466, -0.6 center +set label 7 "$t_{5}$" at 4.15121, -0.6 center +set label 8 "$t_{6}$" at 5.00412, -0.6 center +set label 9 "$t_{7}$" at 6.64549, -0.6 center +set label 10 "$t_{8}$" at 7.81657, -0.6 center +set label 11 "$t_{9}$" at 9.77964, -0.6 center +plot '-' w l lt 1 lc rgb 'black' lw 10 +0.724649 0 +0.724649 1 + +1.67586 0 +1.67586 1 + +3.02389 0 +3.02389 1 + +3.57466 0 +3.57466 1 + +4.15121 0 +4.15121 1 + +5.00412 0 +5.00412 1 + +6.64549 0 +6.64549 1 + +7.81657 0 +7.81657 1 + +9.77964 0 +9.77964 1 +e +unset label 3 +unset label 4 +unset label 5 +unset label 6 +unset label 7 +unset label 8 +unset label 9 +unset label 10 +unset label 11 + +set origin 0, 0.4 +set label 1 '\normalsize Intervals $\{T_i\}, \; T_i = t_{i+1} - t_i$' +set label 3 "$T_{1}$" at 1.20025, -0.5 center +set arrow 3 from 0.724649, 0.2 to 1.67586, 0.2 heads +set label 4 "$T_{2}$" at 2.34987, -0.5 center +set arrow 4 from 1.67586, 0.2 to 3.02389, 0.2 heads +set label 5 "$T_{3}$" at 3.29927, -0.5 center +set arrow 5 from 3.02389, 0.2 to 3.57466, 0.2 heads +set label 6 "$T_{4}$" at 3.86293, -0.5 center +set arrow 6 from 3.57466, 0.2 to 4.15121, 0.2 heads +set label 7 "$T_{5}$" at 4.57767, -0.5 center +set arrow 7 from 4.15121, 0.2 to 5.00412, 0.2 heads +set label 8 "$T_{6}$" at 5.82481, -0.5 center +set arrow 8 from 5.00412, 0.2 to 6.64549, 0.2 heads +set label 9 "$T_{7}$" at 7.23103, -0.5 center +set arrow 9 from 6.64549, 0.2 to 7.81657, 0.2 heads +set label 10 "$T_{8}$" at 8.79811, -0.5 center +set arrow 10 from 7.81657, 0.2 to 9.77964, 0.2 heads +plot '-' w l lt 1 lc rgb 'black' lw 10 +0.724649 0 +0.724649 1 + +1.67586 0 +1.67586 1 + +3.02389 0 +3.02389 1 + +3.57466 0 +3.57466 1 + +4.15121 0 +4.15121 1 + +5.00412 0 +5.00412 1 + +6.64549 0 +6.64549 1 + +7.81657 0 +7.81657 1 + +9.77964 0 +9.77964 1 +e +unset label 3 +unset label 4 +unset label 5 +unset label 6 +unset label 7 +unset label 8 +unset label 9 +unset label 10 +unset arrow 3 +unset arrow 4 +unset arrow 5 +unset arrow 6 +unset arrow 7 +unset arrow 8 +unset arrow 9 +unset arrow 10 + +set origin 0, 0 +set size 1, 0.4 +set border 2 +set yrange [-0.5:10.5] +set ytics 2 nomirror out +set arrow 1 from 0, 0.0 to 11, 0.0 head filled +set label 2 'Time' at 11, -2.2 center +set label 1 '\normalsize Event counts $\{ n_i \}$' at graph -0.07, graph 1.2 +plot '-' w l lt 1 lc rgb 'black' lw 3, \ + '-' w p lt 1 lc rgb 'black' pt 7 ps 1.5 lw 2, \ + '-' w p lt 1 lc rgb 'white' pt 7 ps 1.0 lw 2, \ + '-' w p lt 1 lc rgb 'black' pt 7 ps 1.5 lw 2 +0 0 +0.724649 0 + +0.724649 1 +1.67586 1 + +1.67586 2 +3.02389 2 + +3.02389 3 +3.57466 3 + +3.57466 4 +4.15121 4 + +4.15121 5 +5.00412 5 + +5.00412 6 +6.64549 6 + +6.64549 7 +7.81657 7 + +7.81657 8 +9.77964 8 + +9.77964 9 +10.7899 9 +e +0.724649 0 +1.67586 1 +3.02389 2 +3.57466 3 +4.15121 4 +5.00412 5 +6.64549 6 +7.81657 7 +9.77964 8 +e +0.724649 0 +1.67586 1 +3.02389 2 +3.57466 3 +4.15121 4 +5.00412 5 +6.64549 6 +7.81657 7 +9.77964 8 +e +0.724649 1 +1.67586 2 +3.02389 3 +3.57466 4 +4.15121 5 +5.00412 6 +6.64549 7 +7.81657 8 +9.77964 9 +e + +unset multiplot diff --git a/pointprocesses/lecture/pointprocessscetchB.pdf b/pointprocesses/lecture/pointprocessscetchB.pdf new file mode 100644 index 0000000..a4c7e8c Binary files /dev/null and b/pointprocesses/lecture/pointprocessscetchB.pdf differ diff --git a/pointprocesses/lecture/pointprocessscetchB.tex b/pointprocesses/lecture/pointprocessscetchB.tex new file mode 100644 index 0000000..14803c3 --- /dev/null +++ b/pointprocesses/lecture/pointprocessscetchB.tex @@ -0,0 +1,130 @@ +% GNUPLOT: LaTeX picture with Postscript +\begingroup + \makeatletter + \providecommand\color[2][]{% + \GenericError{(gnuplot) \space\space\space\@spaces}{% + Package color not loaded in conjunction with + terminal option `colourtext'% + }{See the gnuplot documentation for explanation.% + }{Either use 'blacktext' in gnuplot or load the package + color.sty in LaTeX.}% + \renewcommand\color[2][]{}% + }% + \providecommand\includegraphics[2][]{% + \GenericError{(gnuplot) \space\space\space\@spaces}{% + Package graphicx or graphics not loaded% + }{See the gnuplot documentation for explanation.% + }{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}% + \renewcommand\includegraphics[2][]{}% + }% + \providecommand\rotatebox[2]{#2}% + \@ifundefined{ifGPcolor}{% + \newif\ifGPcolor + \GPcolortrue + }{}% + \@ifundefined{ifGPblacktext}{% + \newif\ifGPblacktext + \GPblacktexttrue + }{}% + % define a \g@addto@macro without @ in the name: + \let\gplgaddtomacro\g@addto@macro + % define empty templates for all commands taking text: + \gdef\gplbacktext{}% + \gdef\gplfronttext{}% + \makeatother + \ifGPblacktext + % no textcolor at all + \def\colorrgb#1{}% + \def\colorgray#1{}% + \else + % gray or color? + \ifGPcolor + \def\colorrgb#1{\color[rgb]{#1}}% + \def\colorgray#1{\color[gray]{#1}}% + \expandafter\def\csname LTw\endcsname{\color{white}}% + \expandafter\def\csname LTb\endcsname{\color{black}}% + \expandafter\def\csname LTa\endcsname{\color{black}}% + \expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}% + \expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}% + \expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}% + \expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}% + \expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}% + \expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}% + \expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}% + \expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}% + \expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}% + \else + % gray + \def\colorrgb#1{\color{black}}% + \def\colorgray#1{\color[gray]{#1}}% + \expandafter\def\csname LTw\endcsname{\color{white}}% + \expandafter\def\csname LTb\endcsname{\color{black}}% + \expandafter\def\csname LTa\endcsname{\color{black}}% + \expandafter\def\csname LT0\endcsname{\color{black}}% + \expandafter\def\csname LT1\endcsname{\color{black}}% + \expandafter\def\csname LT2\endcsname{\color{black}}% + \expandafter\def\csname LT3\endcsname{\color{black}}% + \expandafter\def\csname LT4\endcsname{\color{black}}% + \expandafter\def\csname LT5\endcsname{\color{black}}% + \expandafter\def\csname LT6\endcsname{\color{black}}% + \expandafter\def\csname LT7\endcsname{\color{black}}% + \expandafter\def\csname LT8\endcsname{\color{black}}% + \fi + \fi + \setlength{\unitlength}{0.0500bp}% + \begin{picture}(6462.00,3740.00)% + \gplgaddtomacro\gplbacktext{% + \csname LTb\endcsname% + \put(122,3587){\makebox(0,0)[l]{\strut{}\normalsize Event times $\{t_i\}$}}% + \put(6329,2947){\makebox(0,0){\strut{}Time}}% + \put(910,2865){\makebox(0,0){\strut{}$t_{1}$}}% + \put(1412,2865){\makebox(0,0){\strut{}$t_{2}$}}% + \put(2123,2865){\makebox(0,0){\strut{}$t_{3}$}}% + \put(2413,2865){\makebox(0,0){\strut{}$t_{4}$}}% + \put(2717,2865){\makebox(0,0){\strut{}$t_{5}$}}% + \put(3167,2865){\makebox(0,0){\strut{}$t_{6}$}}% + \put(4033,2865){\makebox(0,0){\strut{}$t_{7}$}}% + \put(4650,2865){\makebox(0,0){\strut{}$t_{8}$}}% + \put(5685,2865){\makebox(0,0){\strut{}$t_{9}$}}% + }% + \gplgaddtomacro\gplfronttext{% + }% + \gplgaddtomacro\gplbacktext{% + \csname LTb\endcsname% + \put(122,2465){\makebox(0,0)[l]{\strut{}\normalsize Intervals $\{T_i\}, \; T_i = t_{i+1} - t_i$}}% + \put(6329,1825){\makebox(0,0){\strut{}Time}}% + \put(1161,1770){\makebox(0,0){\strut{}$T_{1}$}}% + \put(1767,1770){\makebox(0,0){\strut{}$T_{2}$}}% + \put(2268,1770){\makebox(0,0){\strut{}$T_{3}$}}% + \put(2565,1770){\makebox(0,0){\strut{}$T_{4}$}}% + \put(2942,1770){\makebox(0,0){\strut{}$T_{5}$}}% + \put(3600,1770){\makebox(0,0){\strut{}$T_{6}$}}% + \put(4341,1770){\makebox(0,0){\strut{}$T_{7}$}}% + \put(5168,1770){\makebox(0,0){\strut{}$T_{8}$}}% + }% + \gplgaddtomacro\gplfronttext{% + }% + \gplgaddtomacro\gplbacktext{% + \colorrgb{0.00,0.00,0.00}% + \put(333,268){\makebox(0,0)[r]{\strut{}$0$}}% + \colorrgb{0.00,0.00,0.00}% + \put(333,460){\makebox(0,0)[r]{\strut{}$2$}}% + \colorrgb{0.00,0.00,0.00}% + \put(333,652){\makebox(0,0)[r]{\strut{}$4$}}% + \colorrgb{0.00,0.00,0.00}% + \put(333,844){\makebox(0,0)[r]{\strut{}$6$}}% + \colorrgb{0.00,0.00,0.00}% + \put(333,1036){\makebox(0,0)[r]{\strut{}$8$}}% + \colorrgb{0.00,0.00,0.00}% + \put(333,1228){\makebox(0,0)[r]{\strut{}$10$}}% + \csname LTb\endcsname% + \put(122,1487){\makebox(0,0)[l]{\strut{}\normalsize Event counts $\{ n_i \}$}}% + \put(6329,57){\makebox(0,0){\strut{}Time}}% + }% + \gplgaddtomacro\gplfronttext{% + }% + \gplbacktext + \put(0,0){\includegraphics{pointprocessscetchB}}% + \gplfronttext + \end{picture}% +\endgroup diff --git a/pointprocesses/lecture/poissoncounthist100hz100ms.pdf b/pointprocesses/lecture/poissoncounthist100hz100ms.pdf new file mode 100644 index 0000000..a120ecf Binary files /dev/null and b/pointprocesses/lecture/poissoncounthist100hz100ms.pdf differ diff --git a/pointprocesses/lecture/poissoncounthist100hz10ms.pdf b/pointprocesses/lecture/poissoncounthist100hz10ms.pdf new file mode 100644 index 0000000..4a9615c Binary files /dev/null and b/pointprocesses/lecture/poissoncounthist100hz10ms.pdf differ diff --git a/pointprocesses/lecture/poissoncounthistdist100hz100ms.pdf b/pointprocesses/lecture/poissoncounthistdist100hz100ms.pdf new file mode 100644 index 0000000..aa25500 Binary files /dev/null and b/pointprocesses/lecture/poissoncounthistdist100hz100ms.pdf differ diff --git a/pointprocesses/lecture/poissoncounthistdist100hz10ms.pdf b/pointprocesses/lecture/poissoncounthistdist100hz10ms.pdf new file mode 100644 index 0000000..746f30b Binary files /dev/null and b/pointprocesses/lecture/poissoncounthistdist100hz10ms.pdf differ diff --git a/pointprocesses/lecture/poissonfano100hz.pdf b/pointprocesses/lecture/poissonfano100hz.pdf new file mode 100644 index 0000000..c25dd3c Binary files /dev/null and b/pointprocesses/lecture/poissonfano100hz.pdf differ diff --git a/pointprocesses/lecture/poissonisih100hz.pdf b/pointprocesses/lecture/poissonisih100hz.pdf new file mode 100644 index 0000000..0dd161d Binary files /dev/null and b/pointprocesses/lecture/poissonisih100hz.pdf differ diff --git a/pointprocesses/lecture/poissonisihexp100hz.pdf b/pointprocesses/lecture/poissonisihexp100hz.pdf new file mode 100644 index 0000000..68df4cf Binary files /dev/null and b/pointprocesses/lecture/poissonisihexp100hz.pdf differ diff --git a/pointprocesses/lecture/poissonisihexp20hz.pdf b/pointprocesses/lecture/poissonisihexp20hz.pdf new file mode 100644 index 0000000..20b79c1 Binary files /dev/null and b/pointprocesses/lecture/poissonisihexp20hz.pdf differ diff --git a/pointprocesses/lecture/poissonraster100hz.pdf b/pointprocesses/lecture/poissonraster100hz.pdf new file mode 100644 index 0000000..24a9b7e Binary files /dev/null and b/pointprocesses/lecture/poissonraster100hz.pdf differ diff --git a/pointprocesses/lecture/poissonreturnmap100hz.pdf b/pointprocesses/lecture/poissonreturnmap100hz.pdf new file mode 100644 index 0000000..30991e9 Binary files /dev/null and b/pointprocesses/lecture/poissonreturnmap100hz.pdf differ diff --git a/pointprocesses/lecture/poissonserial100hz.pdf b/pointprocesses/lecture/poissonserial100hz.pdf new file mode 100644 index 0000000..ff667d9 Binary files /dev/null and b/pointprocesses/lecture/poissonserial100hz.pdf differ diff --git a/pointprocesses/lecture/raster.pdf b/pointprocesses/lecture/raster.pdf new file mode 100644 index 0000000..a20fa0e Binary files /dev/null and b/pointprocesses/lecture/raster.pdf differ diff --git a/pointprocesses/lecture/thumbs.pdf b/pointprocesses/lecture/thumbs.pdf new file mode 100644 index 0000000..61cb4e6 Binary files /dev/null and b/pointprocesses/lecture/thumbs.pdf differ diff --git a/pointprocesses/lecture/whitestyles.gp b/pointprocesses/lecture/whitestyles.gp new file mode 100644 index 0000000..1eeb255 --- /dev/null +++ b/pointprocesses/lecture/whitestyles.gp @@ -0,0 +1,67 @@ +set tics scale 0.8 +set tics out +set format '$%g$' +unset grid +unset key + +# on white background: +set style line 1 lt -1 lc rgb "black" lw 2 # border +set border back ls 1 +set style line 2 lt 1 lc rgb "black" lw 4 pt 7 ps 2 # thick line +set style line 3 lt 1 lc rgb "black" lw 2 # thin line +set style line 4 lt 3 lc rgb "black" lw 1 # grid line + +set style line 10 lt 1 lc rgb "#00DD00" lw 6 # stimulus thick, AM +set style line 11 lt 1 lc rgb "#00DD00" lw 3 # stimulus thin, AM +set style line 15 lt 1 lc rgb "black" lw 15 # stimulus bar + +set style line 20 lt 1 lc rgb "yellow" lw 4 # thin spikes cell 1 +set style line 21 lt 1 lc rgb "orange" lw 4 # thin spikes cell 2 +set style line 22 lt 1 lc rgb "yellow" lw 6 # thick spikes cell 1 +set style line 23 lt 1 lc rgb "orange" lw 6 # thick spikes cell 2 +set style line 24 lt 1 lc rgb "blue" lw 22 # big sync spikes +set style line 25 lt 1 lc rgb "blue" lw 6 # thick sync spikes +set style line 26 lt 1 lc rgb "orange" lw 4 # all spikes + +set style line 30 lt 1 lc rgb "dark-red" lw 6 pt 7 ps 2 # firing rate 1 thick +set style line 31 lt 1 lc rgb "red" lw 6 pt 7 ps 2 # firing rate 2 thick +set style line 32 lt 1 lc rgb "orange" lw 6 pt 7 ps 2 # firing rate 3 thick +set style line 33 lt 1 lc rgb "blue" lw 6 pt 7 ps 2 # firing rate 4 thick +set style line 34 lt 1 lc rgb "gray" lw 6 # firing rate gray thick +set style line 35 lt 1 lc rgb "dark-red" lw 3 pt 7 ps 0.7 # firing rate 1 thin +set style line 36 lt 1 lc rgb "red" lw 3 # firing rate 2 thin +set style line 37 lt 1 lc rgb "orange" lw 3 # firing rate 3 thin +set style line 38 lt 1 lc rgb "blue" lw 3 # firing rate 4 thin +set style line 39 lt 1 lc rgb "gray" lw 3 # firing rate gray thin + +set style line 40 lt 1 lc rgb "green" lw 6 pt 5 ps 2 # onset f-I curve thick +set style line 41 lt 1 lc rgb "green" lw 3 pt 5 ps 2 # onset f-I curve thin +set style line 42 lt 1 lc rgb "red" lw 6 pt 7 ps 2 # steady-state f-I curve thick +set style line 43 lt 1 lc rgb "red" lw 3 pt 7 ps 2 # steady-state f-I curve thin +set style line 44 lt 1 lc rgb "blue" lw 6 pt 9 ps 2 # adapted f-I curve thick +set style line 45 lt 1 lc rgb "blue" lw 3 pt 9 ps 2 # adapted f-I curve thin +set style line 47 lt 1 lc rgb "cyan" lw 6 # adaptation level thick +set style line 48 lt 1 lc rgb "cyan" lw 3 # adaptation level thin +set style line 49 lt 1 lc rgb "yellow" lw 3 pt 7 ps 4 # current adaptation point + +set style line 50 lt 1 lc rgb "dark-red" lw 4 # membrane voltage 1 +set style line 51 lt 1 lc rgb "red" lw 4 # membrane voltage 2 +set style line 52 lt 1 lc rgb "orange" lw 4 # membrane voltage 3 +set style line 55 lt 1 lc rgb "orange" lw 4 # nerve potential + +set style line 60 lt 1 lc rgb "blue" lw 4 # gating variable +set style line 61 lt 1 lc rgb "cyan" lw 4 # gating variable average + +set style line 70 lt 1 lc rgb "red" lw 4 # ionic current +set style line 71 lt 1 lc rgb "orange" lw 4 # ionic current average + +set style line 80 lt 1 lc rgb "#77FFFF" lw 4 pt 13 ps 2.4# baseline +set style line 81 lt 1 lc rgb "#FF5533" lw 4 pt 9 ps 2.8 # beat +set style line 82 lt 1 lc rgb "yellow" lw 4 pt 7 ps 2.4 # chirp +set style line 83 lt 1 lc rgb "#FF7700" lw 4 pt 11 ps 2.8# beat shuffled +set style line 84 lt 1 lc rgb "#FFAA00" lw 4 pt 5 ps 2.2 # chirp shuffled + +set style line 90 lt 1 lc rgb "#77FFFF" lw 2 # EOD thin +set style line 91 lt 1 lc rgb "#77FFFF" lw 4 # EOD thick + +set term epslatex input color dashed rounded size 11.4cm, 6.6cm diff --git a/pointprocesses/resources/Daley2003-IntroductionToTheTheoryOfPointProcesses.pdf b/pointprocesses/resources/Daley2003-IntroductionToTheTheoryOfPointProcesses.pdf new file mode 100644 index 0000000..c93ace1 Binary files /dev/null and b/pointprocesses/resources/Daley2003-IntroductionToTheTheoryOfPointProcesses.pdf differ diff --git a/pointprocesses/resources/Eden2003-IntroductionToPointProcesses.pdf b/pointprocesses/resources/Eden2003-IntroductionToPointProcesses.pdf new file mode 100644 index 0000000..5a193da Binary files /dev/null and b/pointprocesses/resources/Eden2003-IntroductionToPointProcesses.pdf differ diff --git a/resources/Mallot2014-DatAnal.pdf b/resources/Mallot2014-DatAnal.pdf new file mode 100644 index 0000000..92c2ef8 Binary files /dev/null and b/resources/Mallot2014-DatAnal.pdf differ diff --git a/resources/Nieder2013-Matlab_I_Tutorial.pdf b/resources/Nieder2013-Matlab_I_Tutorial.pdf new file mode 100644 index 0000000..1f18e1d Binary files /dev/null and b/resources/Nieder2013-Matlab_I_Tutorial.pdf differ