Merge branch 'master' of raven.am28.uni-tuebingen.de:scientificComputing
This commit is contained in:
commit
f630716151
@ -1,16 +1,79 @@
|
|||||||
load('ampullary.mat')
|
load('ampullary.mat')
|
||||||
fig = figure();
|
sample_rate = 20000; % Hz
|
||||||
|
max_time = 0;
|
||||||
%% create PSTH on the basis of the interspike intervals
|
|
||||||
fig.sub
|
|
||||||
% 1. get the interspike intervals for each trial
|
|
||||||
for i = 1:size(times,2)
|
for i = 1:size(times,2)
|
||||||
isi = diff(times{i});
|
max_time = max([max_time, max(times{i})]);
|
||||||
|
|
||||||
end
|
end
|
||||||
|
%% create PSTH on the basis of the interspike intervals
|
||||||
|
t = times{1};
|
||||||
|
firing_rate = [0 1./diff(t)];
|
||||||
|
start = 1;
|
||||||
|
resp = zeros(1, round(max_time * sample_rate));
|
||||||
|
for i = 1:length(t)
|
||||||
|
resp(1,start:round(t(i) * sample_rate)) = firing_rate(i);
|
||||||
|
start = round(t(i) * sample_rate);
|
||||||
|
end
|
||||||
|
fig = figure();
|
||||||
|
set(gcf, 'PaperUnits', 'centimeters');
|
||||||
|
set(gcf, 'PaperSize', [11.7 9.0]);
|
||||||
|
set(gcf, 'PaperPosition',[0.0 0.0 11.7 9.0]);
|
||||||
|
set(gcf,'Color', 'white')
|
||||||
|
plot((1/sample_rate:1/sample_rate:max_time), resp)
|
||||||
|
xlabel('time [s]')
|
||||||
|
ylabel('firing rate [Hz]')
|
||||||
|
ylim([0 300])
|
||||||
|
xlim([0 1])
|
||||||
|
title('instanataneous firing rate')
|
||||||
|
|
||||||
%% create PSTH using the binning method
|
%% create PSTH using the binning method
|
||||||
|
bin_width = 0.0125; % s
|
||||||
|
edges = 0:bin_width:max_time;
|
||||||
|
firing_rate = [];
|
||||||
|
for i = 1:size(times,2)
|
||||||
|
t = times{i};
|
||||||
|
[n, time] = hist(t, edges);
|
||||||
|
if isempty(firing_rate)
|
||||||
|
firing_rate = n / bin_width / size(times,2);
|
||||||
|
else
|
||||||
|
firing_rate = firing_rate + (n / bin_width / size(times,2));
|
||||||
|
end
|
||||||
|
end
|
||||||
|
fig = figure();
|
||||||
|
set(gcf, 'PaperUnits', 'centimeters');
|
||||||
|
set(gcf, 'PaperSize', [11.7 9.0]);
|
||||||
|
set(gcf, 'PaperPosition',[0.0 0.0 11.7 9.0]);
|
||||||
|
set(gcf,'Color', 'white')
|
||||||
|
plot(time, firing_rate)
|
||||||
|
ylim([0 300])
|
||||||
|
xlim([0 1])
|
||||||
|
xlabel('time [s]')
|
||||||
|
ylabel('firing rate [Hz]')
|
||||||
|
title('binning method')
|
||||||
|
|
||||||
|
%% create PSTH using the kernel-convolution method
|
||||||
|
kernel_width = 0.0125; %s
|
||||||
|
binary_spikes = zeros(size(times,2), round(max_time*sample_rate));
|
||||||
|
resps = zeros(size(binary_spikes));
|
||||||
|
window = hann(kernel_width*sample_rate,'symmetric');
|
||||||
|
window = window/sum(window);
|
||||||
|
|
||||||
|
for i = 1:size(times,2)
|
||||||
%% create PSTH using the kernel-convolution method
|
t = times{i};
|
||||||
|
temp = round(t*sample_rate);
|
||||||
|
if temp(1) <= 0
|
||||||
|
temp(1) = 1;
|
||||||
|
end
|
||||||
|
binary_spikes(i, temp) = 1;
|
||||||
|
resps(i,:) = conv(binary_spikes(i,:), window, 'same')*sample_rate;
|
||||||
|
end
|
||||||
|
fig = figure();
|
||||||
|
set(gcf, 'PaperUnits', 'centimeters');
|
||||||
|
set(gcf, 'PaperSize', [11.7 9.0]);
|
||||||
|
set(gcf, 'PaperPosition',[0.0 0.0 11.7 9.0]);
|
||||||
|
set(gcf,'Color', 'white')
|
||||||
|
plot((1/sample_rate:1/sample_rate:max_time), mean(resps,1))
|
||||||
|
ylim([0 300])
|
||||||
|
xlim([0 1])
|
||||||
|
xlabel('time [s]')
|
||||||
|
ylabel('firing rate [Hz]')
|
||||||
|
title('convolution method')
|
||||||
|
@ -113,8 +113,8 @@
|
|||||||
\frametitle{Tagesmen\"u}
|
\frametitle{Tagesmen\"u}
|
||||||
\begin{enumerate}
|
\begin{enumerate}
|
||||||
\item Graphische Darstellung von Daten I
|
\item Graphische Darstellung von Daten I
|
||||||
\item Spiketrain Analyse I
|
|
||||||
\item Fortgeschrittene Datenstrukturen I
|
\item Fortgeschrittene Datenstrukturen I
|
||||||
|
\item Spiketrain Analyse I
|
||||||
\item Navigieren im Dateisystem
|
\item Navigieren im Dateisystem
|
||||||
\item \"Ubungen, \"Ubungen, \"Ubungen.
|
\item \"Ubungen, \"Ubungen, \"Ubungen.
|
||||||
\end{enumerate}
|
\end{enumerate}
|
||||||
@ -124,6 +124,7 @@
|
|||||||
\huge{1. Graphische Darstellung von Daten}
|
\huge{1. Graphische Darstellung von Daten}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
|
|
||||||
\begin{frame}[fragile]
|
\begin{frame}[fragile]
|
||||||
\frametitle{Graphische Darstellung von Daten}
|
\frametitle{Graphische Darstellung von Daten}
|
||||||
\framesubtitle{Plotting Interface}
|
\framesubtitle{Plotting Interface}
|
||||||
@ -135,12 +136,14 @@
|
|||||||
Beides hat seine Berechtigung und seine eigenen Vor- und Nachteile. Welche?
|
Beides hat seine Berechtigung und seine eigenen Vor- und Nachteile. Welche?
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
|
|
||||||
\begin{frame} [fragile]
|
\begin{frame} [fragile]
|
||||||
\frametitle{Graphische Darstellung von Daten}
|
\frametitle{Graphische Darstellung von Daten}
|
||||||
\framesubtitle{Welche Art Plot wof\"ur?}
|
\framesubtitle{Welche Art Plot wof\"ur?}
|
||||||
\url{http://www.mathworks.de/discovery/gallery.html}
|
\url{http://www.mathworks.de/discovery/gallery.html}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
|
|
||||||
\begin{frame} [fragile]
|
\begin{frame} [fragile]
|
||||||
\frametitle{Graphische Darstellung von Daten}
|
\frametitle{Graphische Darstellung von Daten}
|
||||||
\framesubtitle{Was macht einen guten Plot aus?}
|
\framesubtitle{Was macht einen guten Plot aus?}
|
||||||
@ -150,26 +153,39 @@
|
|||||||
\end{figure}
|
\end{figure}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
|
|
||||||
\begin{frame} [fragile]
|
\begin{frame} [fragile]
|
||||||
\frametitle{Graphische Darstellung von Daten}
|
\frametitle{Graphische Darstellung von Daten}
|
||||||
\framesubtitle{Was macht einen guten Plot aus?}
|
\framesubtitle{Was macht einen guten Plot aus?}
|
||||||
TODO !!!
|
\begin{enumerate}
|
||||||
|
\item Klarheit.
|
||||||
|
\item Vollstaendige Beschriftung.
|
||||||
|
\item Deutliche Unterscheidbarkeit von Kurven.
|
||||||
|
\item Keine suggestive Darstellung.
|
||||||
|
\item Ausgewogenheit von Linienst\"arken Schrift- und Plotgr\"o{\ss}e.
|
||||||
|
\end{enumerate}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
|
|
||||||
\begin{frame} [fragile]
|
\begin{frame}[plain]
|
||||||
\frametitle{Graphische Darstellung von Daten}
|
\huge{2. Fortgeschrittene Datenstrukturen I}
|
||||||
\framesubtitle{\"Ubung}
|
\end{frame}
|
||||||
\begin{enumerate}
|
|
||||||
\item Nehmt euch einen beliebigen Datenplot vor und macht ihn \textbf{sch\"on}.
|
|
||||||
\item Die Abbildung soll f\"ur eine einspaltige Abbildung im
|
\begin{frame}
|
||||||
\textit{Journal of Neuroscience} geeignet sein
|
\frametitle{Fortgeschrittene Datenstrukturen I}
|
||||||
(\url{http://www.jneurosci.org/site/misc/ifa_illustrations.xhtml}).
|
\framesubtitle{Cell Arrays}
|
||||||
\item Erzeugt/ver\"andert/erweitert das Programm zum plotten so, dass
|
\begin{enumerate}
|
||||||
die Abbildung automatisch erstellt und gespeichert wird.
|
\item Matrizen k\"onnen nur rechtwinklig sein.\pause
|
||||||
\item Speichert die Abbildung als pdf.
|
\item Manchmal hat man aber unterschiedlich viele Datenpunkte, die
|
||||||
\item Wer den sch\"onsten Plot macht, dem winkt ein Preis :-)
|
dennoch logisch zusammengeh\"oren.\pause
|
||||||
\end{enumerate}
|
\item Z.B. Wenn man Zeitpunkte von Neuronalen- oder Verhaltensereignissen hat.
|
||||||
|
\end{enumerate}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{frame}[plain]
|
||||||
|
\huge{3. Spiketrain Analyse I}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
\begin{frame}
|
\begin{frame}
|
||||||
@ -197,14 +213,65 @@
|
|||||||
|
|
||||||
\begin{frame}
|
\begin{frame}
|
||||||
\frametitle{Spiketrain Analyse I}
|
\frametitle{Spiketrain Analyse I}
|
||||||
\framesubtitle{PSTH}
|
\framesubtitle{Feuerrate \"uber die Zeit}
|
||||||
\textbf{P}eri- \textbf{S}timulus - \textbf{T}ime - \textbf{H}istogram
|
\begin{enumerate}
|
||||||
|
\item Die Feuerrate kann aus dem Abstand zwischen zwei
|
||||||
|
aufeinanderfolgenden Aktionspotentialen (\textbf{Interspikeinterval}) berechnet werden. \pause
|
||||||
|
\item Auch als \textbf{Instantane Feuerrate} bezeichnet.
|
||||||
|
\end{enumerate}
|
||||||
|
\begin{figure}
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.75\columnwidth]{images/isi}
|
||||||
|
\end{figure}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{frame}
|
||||||
|
\frametitle{Spiketrain Analyse I}
|
||||||
|
\framesubtitle{Feuerrate \"uber die Zeit}
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Z.B. das \textbf{P}eri- \textbf{S}timulus - \textbf{T}ime -
|
||||||
|
\textbf{H}istogram, \textbf{PSTH}
|
||||||
|
\item Wird berechnet indem die Zeit in ``bins'' geteilt wird die
|
||||||
|
Anzahl Spikes pro bin gezaehlt werden.
|
||||||
|
\item Die Anzahl wird dann in eine Feuerrate umgerechnet.
|
||||||
|
\end{enumerate}\pause
|
||||||
|
\begin{figure}
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.75\columnwidth]{images/binning}
|
||||||
|
\end{figure}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{frame}
|
||||||
|
\frametitle{Spiketrain Analyse I}
|
||||||
|
\framesubtitle{Feuerrate \"uber die Zeit}
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Z.B. das \textbf{P}eri- \textbf{S}timulus - \textbf{T}ime -
|
||||||
|
\textbf{H}istogram, \textbf{PSTH}
|
||||||
|
\item Wird berechnet indem man die Aktivit\"at bin\"ar ausdr\"uckt.
|
||||||
|
\item Jede 1 wird dann duch einen bestimmten ``Kern'' ersetzt.
|
||||||
|
\item Der Vorgagn heisst Verfaltung (convolution).
|
||||||
|
\end{enumerate}\pause
|
||||||
\begin{figure}
|
\begin{figure}
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[width=0.75\columnwidth]{images/psth}
|
\includegraphics[width=0.75\columnwidth]{images/convolution}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{frame} [fragile]
|
||||||
|
\frametitle{Graphische Darstellung von Daten}
|
||||||
|
\framesubtitle{\"Ubung}
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Nehmt euch einen beliebigen Datenplot vor und macht ihn \textbf{sch\"on}.
|
||||||
|
\item Die Abbildung soll f\"ur eine einspaltige Abbildung im
|
||||||
|
\textit{Journal of Neuroscience} geeignet sein
|
||||||
|
(\url{http://www.jneurosci.org/site/misc/ifa_illustrations.xhtml}).
|
||||||
|
\item Erzeugt/ver\"andert/erweitert das Programm zum plotten so, dass
|
||||||
|
die Abbildung automatisch erstellt und gespeichert wird.
|
||||||
|
\item Speichert die Abbildung als pdf.
|
||||||
|
\end{enumerate}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
@ -52,7 +52,7 @@
|
|||||||
Universit\"at T\"ubingen}
|
Universit\"at T\"ubingen}
|
||||||
|
|
||||||
\institute[Wissenschaftliche Datenverarbeitung]{}
|
\institute[Wissenschaftliche Datenverarbeitung]{}
|
||||||
\date{03.10.2014 - 07.11.2014}
|
\date{13.10.2014 - 07.11.2014}
|
||||||
%\logo{\pgfuseimage{../../resources/UT_BM_Rot_RGB.pdf}}
|
%\logo{\pgfuseimage{../../resources/UT_BM_Rot_RGB.pdf}}
|
||||||
|
|
||||||
\subject{Einf\"uhrung in wissenschaftliche Datenverarbeitung}
|
\subject{Einf\"uhrung in wissenschaftliche Datenverarbeitung}
|
||||||
@ -528,7 +528,7 @@
|
|||||||
\item Definiere zwei Vektoren: \verb+x = [3 2 6 8];+ and \verb+y = [4; 1; 3; 5];+
|
\item Definiere zwei Vektoren: \verb+x = [3 2 6 8];+ and \verb+y = [4; 1; 3; 5];+
|
||||||
\begin{enumerate}
|
\begin{enumerate}
|
||||||
\item ... addiere 5 zu jedem Element von \verb+x+.
|
\item ... addiere 5 zu jedem Element von \verb+x+.
|
||||||
\item ... addiere 3 zu jedem Element zu jedem Element von y, dass einen nicht gerade Index hat.
|
\item ... addiere 3 zu jedem Element von y, dass einen nicht gerade Index hat.
|
||||||
\item ... multipliziere jedes Element von \verb+x+ mit dem
|
\item ... multipliziere jedes Element von \verb+x+ mit dem
|
||||||
entsprechenden Element in \verb+y+ und weise das Ergebnis der
|
entsprechenden Element in \verb+y+ und weise das Ergebnis der
|
||||||
Variable \verb+z+ zu.
|
Variable \verb+z+ zu.
|
||||||
|
@ -156,7 +156,7 @@
|
|||||||
\end{enumerate}\pause
|
\end{enumerate}\pause
|
||||||
\item Alle werden in sogenannte m-files gespeichert (z.B. \textit{meinProgramm.m}).
|
\item Alle werden in sogenannte m-files gespeichert (z.B. \textit{meinProgramm.m}).
|
||||||
\item K\"onnen dann von der Kommandozeile aufgerufen werden.
|
\item K\"onnen dann von der Kommandozeile aufgerufen werden.
|
||||||
\item Programme erh\"ohen die Wiederverwertbarkeit von Programmcode.
|
\item Programme erh\"ohen die Wiederverwertbarkeit von Programmcode.\pause
|
||||||
\item Programme k\"onnen andere Programme aufrufen.
|
\item Programme k\"onnen andere Programme aufrufen.
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
@ -188,13 +188,13 @@
|
|||||||
\frametitle{Skripte und Funktionen}
|
\frametitle{Skripte und Funktionen}
|
||||||
\framesubtitle{\"Ubungen}
|
\framesubtitle{\"Ubungen}
|
||||||
\begin{enumerate}
|
\begin{enumerate}
|
||||||
\item \"Offnet den Editor und schreibt ein Skript, das f\"unf Sinus
|
\item \"Offnet den Editor und schreibt ein Skript, das vier Sinus
|
||||||
mit den Amplituden \verb+amplitude = [0.25, 0.5, 1.0, 2.0]+ in
|
mit den Amplituden \verb+amplitude = [0.25, 0.5, 1.0, 2.0]+ in
|
||||||
einen Graphen plottet. Benutzt eine \verb+for+ Schleife um die Amplituden abzuarbeiten.
|
einen Graphen plottet. Benutzt eine \verb+for+ Schleife um die Amplituden abzuarbeiten (\verb+hold on+ um linien \"ubereinander zu plotten).
|
||||||
\item Speichert das Skript und f\"uhrt es von der Kommandozeile aus.
|
\item Speichert das Skript und f\"uhrt es von der Kommandozeile aus.
|
||||||
\item Erzeuge ein zweites Skript, das nun die Frequenz setzt und das
|
\item Erzeuge ein zweites Skript, das nun die Frequenz setzt und das
|
||||||
erste aufruft. Benutzt eine \verb+for+ Schleife um folgende
|
erste aufruft. Benutzt eine \verb+for+ Schleife um folgende
|
||||||
Frequenzen abzuarbeiten \verb+frequenzen = [1.0, 2.0]+.
|
Frequenzen abzuarbeiten \verb+frequenzen = [1.0, 2.0, 3.0] %Hz+.
|
||||||
\item Speichert und ruft dieses Skript \"uber die Kommandozeile auf.
|
\item Speichert und ruft dieses Skript \"uber die Kommandozeile auf.
|
||||||
\item Was ist geplottet, passt es zu den Erwartungen?
|
\item Was ist geplottet, passt es zu den Erwartungen?
|
||||||
\end{enumerate}
|
\end{enumerate}
|
||||||
@ -243,6 +243,25 @@ function y = plot_sinus(frequenz, amplitude)
|
|||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{frame}[fragile]
|
||||||
|
\frametitle{Funktionen}
|
||||||
|
\framesubtitle{Argumente und R\"uckgabewerte}
|
||||||
|
Eine Funktion kann auch mehrere R\"uckgabewerte haben.
|
||||||
|
\begin{lstlisting}
|
||||||
|
function [y, z] = do_something(a, b)
|
||||||
|
y = a + b
|
||||||
|
z = a * b
|
||||||
|
\end{lstlisting}
|
||||||
|
\pause
|
||||||
|
\begin{itemize}
|
||||||
|
\item Alle R\"uckgabewerte m\"ussen in der Funktion definiert sein!\pause
|
||||||
|
\item Man kann auch mit variablen Anzahlen der Argumente und R\"uckgabewerte programmieren.\pause
|
||||||
|
\item Ist aber deutlich komplexer und fehleranf\"alliger.
|
||||||
|
\end{itemize}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
|
|
||||||
\begin{frame}[fragile]
|
\begin{frame}[fragile]
|
||||||
\frametitle{Skripte und Funktionen}
|
\frametitle{Skripte und Funktionen}
|
||||||
\framesubtitle{Programmierstil}
|
\framesubtitle{Programmierstil}
|
||||||
@ -303,7 +322,7 @@ function y = plot_sinus(frequenz, amplitude)
|
|||||||
\begin{enumerate}
|
\begin{enumerate}
|
||||||
\item Variablen werden klein geschrieben. Wenn n\"otig entweder im
|
\item Variablen werden klein geschrieben. Wenn n\"otig entweder im
|
||||||
\textit{camelCase} oder mit Unterstrichen (z.B. \verb+spikeCount+
|
\textit{camelCase} oder mit Unterstrichen (z.B. \verb+spikeCount+
|
||||||
oder \verb+spike\_count+).
|
oder \verb+spike_count+).
|
||||||
\item Funktionen und Skripte mit ausdrucksstarken Namen (z.B. \verb+loadSpikeData+).
|
\item Funktionen und Skripte mit ausdrucksstarken Namen (z.B. \verb+loadSpikeData+).
|
||||||
\item Kommentare sparsam. Eventuell um Abschnitte zu trennen.
|
\item Kommentare sparsam. Eventuell um Abschnitte zu trennen.
|
||||||
\item Hilfetexte: Ein Problem; sie m\"ussen aktuell sein sonst sind
|
\item Hilfetexte: Ein Problem; sie m\"ussen aktuell sein sonst sind
|
||||||
@ -357,13 +376,14 @@ function y = plot_sinus(frequenz, amplitude)
|
|||||||
\item Schreibe eine Funktion \verb+plotSineWave+ die die Amplitude
|
\item Schreibe eine Funktion \verb+plotSineWave+ die die Amplitude
|
||||||
des Sinus als Argument entgegennimmt.
|
des Sinus als Argument entgegennimmt.
|
||||||
\item Erweitere die Funktion in der Weise, dass sie zus\"atzlich die
|
\item Erweitere die Funktion in der Weise, dass sie zus\"atzlich die
|
||||||
gew\"uenschte Frequenz \"ubernimmt.
|
gew\"unschte Frequenz \"ubernimmt.
|
||||||
\item Erweitere \verb+plotSineWave+ so, dass sie eine Schar von
|
\item Erweitere \verb+plotSineWave+ so, dass sie eine Schar von
|
||||||
Sinuswellen unterschiedlicher Frequenz plottet.
|
Sinuswellen unterschiedlicher Frequenz plottet.
|
||||||
\item Erweitere \verb+plotSinWave+ so, dass auch die Amplitude als
|
\item Erweitere \verb+plotSineWave+ so, dass auch die Amplitude als
|
||||||
Vektor \"ubergeben werden kann. Die Funktion soll alle m\"oglichen
|
Vektor \"ubergeben werden kann. Die Funktion soll alle m\"oglichen
|
||||||
Kombinationen darstellen.
|
Kombinationen darstellen.
|
||||||
\item Erweitere \verb+plotSinWave+ so, dass die berechnete Sinus in einer 2-D Matrize zurckgegeben werden.
|
\item Erweitere \verb+plotSineWave+ so, dass die berechnete Sinus in
|
||||||
|
einer 2-D Matrize zur\"uckgegeben werden.
|
||||||
\item F\"uge zwei weitere R\"uckgabeparameter hinzu, die f\"ur jede
|
\item F\"uge zwei weitere R\"uckgabeparameter hinzu, die f\"ur jede
|
||||||
Berechnung die Amplitude und Frequenz zur\"uckgeben.
|
Berechnung die Amplitude und Frequenz zur\"uckgeben.
|
||||||
\end{enumerate}
|
\end{enumerate}
|
||||||
|
Reference in New Issue
Block a user