Merge branch 'master' of raven:scientificComputing
BIN
programming/lectures/images/badbarleft.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
programming/lectures/images/badbarplot.jpg
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
programming/lectures/images/badbarright.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 47 KiB |
BIN
programming/lectures/images/histogram.png
Executable file
After Width: | Height: | Size: 3.2 KiB |
BIN
programming/lectures/images/histogrambad.png
Executable file
After Width: | Height: | Size: 3.4 KiB |
BIN
programming/lectures/images/histogrambad2.png
Executable file
After Width: | Height: | Size: 3.4 KiB |
BIN
programming/lectures/images/improperly_scaled_graph.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
programming/lectures/images/line_graph1.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
programming/lectures/images/line_graph1_3.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
programming/lectures/images/line_graph1_4.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
programming/lectures/images/misleading_pie.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
programming/lectures/images/nobelbad.png
Normal file
After Width: | Height: | Size: 266 KiB |
BIN
programming/lectures/images/one_d_problem_c.pdf
Normal file
BIN
programming/lectures/images/properly_scaled_graph.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
programming/lectures/images/sample_pie.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
@ -86,6 +86,8 @@
|
||||
\end{flushright}
|
||||
}
|
||||
|
||||
\newcommand{\code}[1]{\texttt{#1}}
|
||||
|
||||
\input{../../latex/environments.tex}
|
||||
\makeatother
|
||||
|
||||
@ -103,11 +105,259 @@
|
||||
\begin{enumerate}
|
||||
\item Graphische Darstellung von Daten
|
||||
\item Spiketrain Analyse
|
||||
\item \"Ubungen, \"Ubungen, \"Ubungen.
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}[plain]
|
||||
\huge{1. Graphische Darstellung von Daten}\pause
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.9\columnwidth]{images/convincing}
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Graphische Darstellung von Daten}
|
||||
\framesubtitle{Was soll ein Datenplot erreichen?}
|
||||
|
||||
\begin{itemize}
|
||||
\item Ist eine m\"oglichst neutrale Darstellung der Daten.
|
||||
\item Soll dem Leser die Daten greifbar machen und die Aussagen der
|
||||
Analyse darstellen.
|
||||
\item Erlaubt dem Leser die gezeigten Effekte selbst zu beguachten
|
||||
und zu validieren.
|
||||
\item Muss vollst\"andig annotiert sein.
|
||||
\item Folgt dem Prinzip der \textbf{ink minimization}. (Das
|
||||
Verh\"altnis aus Tinte, die f\"ur die Darstellung der Daten
|
||||
gebraucht wird und der Menge Tinte, die f\"ur die Graphik
|
||||
ben\"otigt wird sollte m\"oglichst gro{\ss} sein )
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Graphische Darstellung von Daten}
|
||||
\framesubtitle{Was sollte vermieden werden?}
|
||||
|
||||
\begin{itemize}
|
||||
\item Suggestive oder gar fehlleitende Darstellung.
|
||||
\item Ablenkung durch unruhige oder \"uberm\"a{\ss}ige Effekte.
|
||||
\item Comicartige Effekte...
|
||||
\end{itemize}\pause
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.35\columnwidth]{images/one_d_problem_c}
|
||||
\end{figure}\pause
|
||||
... aus{\ss}er sie werden rein zur Illustration benutzt ohne einen
|
||||
Anspruch auf Richtigkeit zu erheben.
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Graphische Darstellung von Daten}
|
||||
\framesubtitle{Suboptimale Beispiele}
|
||||
\only <1> {
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.5\columnwidth]{images/nobelbad}
|
||||
\end{figure}
|
||||
\vspace{0.25cm}
|
||||
Aus Hafting et al., Nature, 2005
|
||||
}
|
||||
\only <2> {
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.7\columnwidth]{images/misleading_pie}
|
||||
\end{figure}
|
||||
\vspace{0.5cm}
|
||||
\url{https://en.wikipedia.org/wiki/Misleading_graph}
|
||||
}
|
||||
\only <3> {
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.7\columnwidth]{images/sample_pie}
|
||||
\end{figure}
|
||||
\vspace{0.5cm}
|
||||
\url{https://en.wikipedia.org/wiki/Misleading_graph}
|
||||
}
|
||||
\only <4> {
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.4\columnwidth]{images/badbarright}
|
||||
\end{figure}
|
||||
\vspace{0.5cm}
|
||||
\url{https://en.wikipedia.org/wiki/Misleading_graph}
|
||||
}
|
||||
\only <5> {
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.4\columnwidth]{images/badbarleft}
|
||||
\end{figure}
|
||||
\vspace{0.5cm}
|
||||
\url{https://en.wikipedia.org/wiki/Misleading_graph}
|
||||
}
|
||||
\only <6> {
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.8\columnwidth]{images/badbarplot}
|
||||
\end{figure}
|
||||
\vspace{0.5cm}
|
||||
\url{https://en.wikipedia.org/wiki/Misleading_graph}
|
||||
}
|
||||
\only <7> {
|
||||
Wahl der Zeichenfl\"ache kann den visuellen Eindruck beeinflu{\ss}en.
|
||||
\begin{columns}
|
||||
\begin{column}{4.cm}
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.7\columnwidth]{images/line_graph1}
|
||||
\end{figure}
|
||||
\end{column}
|
||||
|
||||
\begin{column}{4.cm}
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.7\columnwidth]{images/line_graph1_3}
|
||||
\end{figure}
|
||||
\end{column}
|
||||
|
||||
\begin{column}{4.cm}
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.7\columnwidth]{images/line_graph1_4}
|
||||
\end{figure}
|
||||
\end{column}
|
||||
\end{columns}
|
||||
\vspace{0.5cm}
|
||||
\url{https://en.wikipedia.org/wiki/Misleading_graph}
|
||||
}
|
||||
\only <8> {
|
||||
Vorsicht bei der Skalierung von Symbolen!
|
||||
\begin{columns}
|
||||
\begin{column}{4.cm}
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.7\columnwidth]{images/improperly_scaled_graph}
|
||||
\end{figure}
|
||||
\end{column}
|
||||
|
||||
\begin{column}{4.cm}
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.7\columnwidth]{images/properly_scaled_graph}
|
||||
\end{figure}
|
||||
\end{column}
|
||||
|
||||
\begin{column}{4.cm}
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.7\columnwidth]{images/comparison_properly_improperly_graph}
|
||||
\end{figure}
|
||||
\end{column}
|
||||
\end{columns}
|
||||
\vspace{0.5cm}
|
||||
\url{https://en.wikipedia.org/wiki/Misleading_graph}
|
||||
}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Graphische Darstellung von Daten}
|
||||
\framesubtitle{Plotting Interfaces in Matlab}
|
||||
Es gibt zwei Wege Graphen zu bearbeiten:
|
||||
\begin{enumerate}
|
||||
\item Interaktiv \"uber das \textit{graphische User Interface}\pause
|
||||
\item Die Kommandozeile bzw. in Skripten und Funktionen.\pause
|
||||
\end{enumerate}
|
||||
Beides hat seine Berechtigung und seine eigenen Vor- und Nachteile. Welche?
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Graphische Darstellung von Daten}
|
||||
\framesubtitle{Ver\"anderung des Graphen \"uber die Kommandozeile}
|
||||
\begin{itemize}
|
||||
\item Erstellt ein Skript, dass einen Plot erstellt.
|
||||
\item Dieser soll zwei Sinus unterschiedlicher Frequenz darstellen.
|
||||
\end{itemize}
|
||||
Wir werden jetzt die Kommandozeil bzw. das Skript verbessern um den
|
||||
Plot ``sch\"oner'' zu machen.
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Graphische Darstellung von Daten}
|
||||
\framesubtitle{Ver\"anderung des Graphen \"uber die Kommandozeile}
|
||||
\begin{enumerate}
|
||||
\item Einstellungen der Linienplots:
|
||||
\begin{itemize}
|
||||
\item St\"arke und Farbe.
|
||||
\item Linienstil, Marker.
|
||||
\end{itemize}\pause
|
||||
\item Achsbeschriftung:
|
||||
\begin{itemize}
|
||||
\item \code{xlabel}, \code{ylabel}.
|
||||
\item Schriftart und Gr\"o{\ss}e.
|
||||
\end{itemize}\pause
|
||||
\item Achsenskalierung und Ticks:
|
||||
\begin{itemize}
|
||||
\item Skalierung der Achsen (Minumum und Maxmimum, logarithmisch oder linear).
|
||||
\item Manuelles Setzen der Ticks, ihrer Richtung und Beschriftung.
|
||||
\item Grid or no Grid?
|
||||
\end{itemize}\pause
|
||||
\item Setzen von globalen Parametern:
|
||||
\begin{itemize}
|
||||
\item Einstellung der Papiergr\"o{\ss}e und plzieren der
|
||||
Zeichenfl\"ache.
|
||||
\item Box oder nicht?
|
||||
\item Speichern der Abbildung als pdf.
|
||||
\end{itemize}
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame} [fragile]
|
||||
\frametitle{Graphische Darstellung von Daten}
|
||||
\framesubtitle{Ver\"andern von Eigenschaften \"uber die Kommandozeile}
|
||||
\vspace{-0.75em}
|
||||
\scriptsize
|
||||
\begin{lstlisting}
|
||||
fig = figure();
|
||||
set(gcf, 'PaperUnits', 'centimeters', 'PaperSize', [11.7 9.0]);
|
||||
set(gcf, 'PaperPosition',[0.0 0.0 11.7 9.0], 'Color', 'white')
|
||||
hold on
|
||||
plot(time, neuronal_data, 'color', [ 0.2 0.5 0.7], 'linewidth', 1.)
|
||||
plot(spike_times, ones(size(spike_times))*threshold, 'ro', 'markersize', 4)
|
||||
line([time(1) time(end)], [threshold threshold], 'linestyle', '--',
|
||||
'linewidth', 0.75, 'color', [0.9 0.9 0.9])
|
||||
ylim([0 35])
|
||||
xlim([0 2.25])
|
||||
box('off')
|
||||
xlabel('time [s]', 'fontname', 'MyriadPro-Regular', 'fontsize', 10)
|
||||
ylabel('potential [mV]', 'fontname', 'MyriadPro-Regular', 'fontsize', 10)
|
||||
title('pyramidal cell', 'fontname', 'MyriadPro-Regular', 'fontsize', 12)
|
||||
set(gca, 'TickDir','out', 'linewidth', 1.5, 'fontname', 'MyriadPro-Regular')
|
||||
saveas(fig, 'spike_detection.pdf', 'pdf')
|
||||
\end{lstlisting}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame} [fragile]
|
||||
\frametitle{Graphische Darstellung von Daten}
|
||||
\framesubtitle{Ver\"andern von Eigenschaften \"uber die Kommandozeile}
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=0.75\columnwidth]{./images/spike_detection}
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame} [fragile]
|
||||
\frametitle{Graphische Darstellung von Daten}
|
||||
\framesubtitle{Welche Art Plot wof\"ur?}
|
||||
\url{http://www.mathworks.de/discovery/gallery.html}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame} [fragile]
|
||||
\frametitle{Graphische Darstellung von Daten}
|
||||
\framesubtitle{Was macht einen guten Abbildung aus?}
|
||||
\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.
|
||||
\item Vermeidung von Suggestiven Darstellungen.
|
||||
\item Fehlerbalken, wenn sie angebracht sind.
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}[plain]
|
||||
\huge{2. Spiketrain Analyse I}
|
||||
\end{frame}
|
||||
|
7
statistics/code/boltzmann.m
Normal file
@ -0,0 +1,7 @@
|
||||
function y = boltzmann(parameter, x)
|
||||
% parameter 1: alpha
|
||||
% parameter 2: k
|
||||
% parameter 3: x_0
|
||||
% parameter 4: y_0
|
||||
|
||||
y = (parameter(1) ./ (1 + exp(-parameter(2) .* (x - parameter(3))))) + parameter(4);
|
7
statistics/code/create_linear_data.m
Normal file
@ -0,0 +1,7 @@
|
||||
function y = create_linear_data(x)
|
||||
|
||||
m = 2.5;
|
||||
n = -0.35;
|
||||
d = 2.5;
|
||||
|
||||
y = x .* m + n + randn(size(x)) .* d;
|
7
statistics/code/estimate_regression.m
Normal file
@ -0,0 +1,7 @@
|
||||
function param = estimate_regression(x,y,p_0)
|
||||
|
||||
objective_function = @(p)lsq_error(p, x, y);
|
||||
param = fminunc(objective_function, p_0);
|
||||
disp(param)
|
||||
param1 = fminsearch(objective_function, p_0);
|
||||
disp(param1)
|
5
statistics/code/exponential.m
Normal file
@ -0,0 +1,5 @@
|
||||
function y = exponential(parameter, x)
|
||||
% Function implements an exponential function with two parameters
|
||||
% controlling the amplitude and the time constant.
|
||||
|
||||
y = parameter(1) .* exp(x./parameter(2));
|
9
statistics/code/lsq_gradient_sigmoid.m
Normal file
@ -0,0 +1,9 @@
|
||||
function gradient = lsq_gradient_sigmoid(parameter, x, y)
|
||||
h = 1e-6;
|
||||
|
||||
gradient = zeros(size(parameter));
|
||||
for i = 1:length(parameter)
|
||||
parameter_h = parameter;
|
||||
parameter_h(i) = parameter_h(i) + h;
|
||||
gradient(i) = (lsq_sigmoid_error(parameter_h, x, y) - lsq_sigmoid_error(parameter, x, y)) / h;
|
||||
end
|
8
statistics/code/lsq_sigmoid_error.m
Normal file
@ -0,0 +1,8 @@
|
||||
function error = lsq_sigmoid_error(parameter, x, y)
|
||||
% p(1) the amplitude
|
||||
% p(2) the slope
|
||||
% p(3) the x-shift
|
||||
% p(4) the y-shift
|
||||
|
||||
y_est = parameter(1)./(1+ exp(-parameter(2) .* (x - parameter(3)))) + parameter(4);
|
||||
error = mean((y_est - y).^2);
|
44
statistics/code/sigmoidal_gradient_descent.m
Normal file
@ -0,0 +1,44 @@
|
||||
|
||||
|
||||
%% fit the sigmoid
|
||||
|
||||
clear
|
||||
close all
|
||||
|
||||
load('iv_curve.mat')
|
||||
|
||||
figure()
|
||||
plot(voltage, current, 'o')
|
||||
xlabel('voltate [mV]')
|
||||
ylabel('current [pA]')
|
||||
|
||||
% amplitude, slope, x-shift, y-shift
|
||||
%parameter = [10 0.25 -50, 2.5];
|
||||
parameter = [20 0.5 -50, 2.5];
|
||||
|
||||
eps = 0.1;
|
||||
% do the descent
|
||||
gradient = [];
|
||||
steps = 0;
|
||||
error = [];
|
||||
|
||||
while isempty(gradient) || norm(gradient) > 0.01
|
||||
steps = steps + 1;
|
||||
gradient = lsq_gradient_sigmoid(parameter, voltage, current);
|
||||
error(steps) = lsq_sigmoid_error(parameter, voltage, current);
|
||||
parameter = parameter - eps .* gradient;
|
||||
end
|
||||
plot(1:steps, error)
|
||||
|
||||
disp('gradient descent done!')
|
||||
disp(strcat('final position: ', num2str(parameter)))
|
||||
disp(strcat('final error: ', num2str(error(end))))
|
||||
|
||||
%% use fminsearch
|
||||
parameter = [10 0.5 -50, 2.5];
|
||||
|
||||
objective_function = @(p)lsq_sigmoid_error(p, voltage, current);
|
||||
param = fminunc(objective_function, parameter);
|
||||
disp(param)
|
||||
param1 = fminsearch(objective_function, parameter);
|
||||
disp(param1)
|