diff --git a/programming/exercises/day_1_exercises.pdf b/programming/exercises/day_1_exercises.pdf deleted file mode 100644 index e80f7f7..0000000 Binary files a/programming/exercises/day_1_exercises.pdf and /dev/null differ diff --git a/programming/lectures/images/rasterplot.png b/programming/lectures/images/rasterplot.png new file mode 100644 index 0000000..322211e Binary files /dev/null and b/programming/lectures/images/rasterplot.png differ diff --git a/programming/lectures/plotting_spike_trains.tex b/programming/lectures/plotting_spike_trains.tex new file mode 100644 index 0000000..4ae5ffa --- /dev/null +++ b/programming/lectures/plotting_spike_trains.tex @@ -0,0 +1,211 @@ +\documentclass{beamer} +\usepackage{xcolor} +\usepackage{listings} +\usepackage{pgf} +%\usepackage{pgf,pgfarrows,pgfnodes,pgfautomata,pgfheaps,pgfshade} +%\usepackage{multimedia} + +\usepackage[english]{babel} +\usepackage{movie15} +\usepackage[latin1]{inputenc} +\usepackage{times} +\usepackage{amsmath} +\usepackage{bm} +\usepackage[T1]{fontenc} +\usepackage[scaled=.90]{helvet} +\usepackage{scalefnt} +\usepackage{tikz} +\usepackage{ textcomp } +\usepackage{soul} +\usepackage{hyperref} +\definecolor{lightblue}{rgb}{.7,.7,1.} +\definecolor{mygreen}{rgb}{0,1.,0} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode +{ + \usetheme{Singapore} + \setbeamercovered{opaque} + \usecolortheme{tuebingen} + \setbeamertemplate{navigation symbols}{} + \usefonttheme{default} + \useoutertheme{infolines} + % \useoutertheme{miniframes} +} + +\AtBeginSection[] +{ + \begin{frame} + \begin{center} + \Huge \insertsectionhead + \end{center} + % \frametitle{\insertsectionhead} + % \tableofcontents[currentsection,hideothersubsections] + \end{frame} +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 + +\setbeamertemplate{blocks}[rounded][shadow=true] + +\title[]{Scientific Computing -- Grundlagen der Programmierung } +\author[]{Jan Grewe\\Abteilung f\"ur Neuroethologie\\ + Universit\"at T\"ubingen} + +\institute[Wissenschaftliche Datenverarbeitung]{} + \date{03.10.2014 - 07.11.2014} + %\logo{\pgfuseimage{../../resources/UT_BM_Rot_RGB.pdf}} + +\subject{Einf\"uhrung in wissenschaftliche Datenverarbeitung} +\vspace{1em} +\titlegraphic{ + \includegraphics[width=0.5\linewidth]{../../resources/UT_WBMW_Rot_RGB} +} +%%%%%%%%%% configuration for code +\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 + } +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\mycite}[1]{ +\begin{flushright} +\tiny \color{black!80} #1 +\end{flushright} +} + +\input{../../latex/environments.tex} +\makeatother + +\begin{document} + +\begin{frame}[plain] + \frametitle{} + \vspace{-1cm} + \titlepage % erzeugt Titelseite +\end{frame} + +\begin{frame}[plain] + \frametitle{Rekapitulation} + \begin{enumerate} + \item Was ist ein Programm\pause + \item Skripte\pause + \item Funktionen\pause + \item Vom Problem zum Algorithmus + \end{enumerate} +\end{frame} + + +\begin{frame} + \frametitle{Grundlagen der Programmierung} + \frametitle{Tagesmen\"u} + \begin{enumerate} + \item Graphische Darstellung von Daten I + \item Spiketrain Analyse I + \item Fortgeschrittene Datenstrukturen I + \item Navigieren im Dateisystem + \item \"Ubungen, \"Ubungen, \"Ubungen. + \end{enumerate} +\end{frame} + +\begin{frame}[plain] +\huge{1. Graphische Darstellung von Daten} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Graphische Darstellung von Daten} + \framesubtitle{Plotting Interface} + Es gibt zwei Wege Graphen zu bearbeiten: + \begin{enumerate} + \item Klickibunti \"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} [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 Plot aus?} + \begin{figure} + \centering + \includegraphics[width=0.9\columnwidth]{./images/convincing} + \end{figure} +\end{frame} + +\begin{frame} [fragile] + \frametitle{Graphische Darstellung von Daten} + \framesubtitle{Was macht einen guten Plot aus?} + TODO !!! +\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. + \item Wer den sch\"onsten Plot macht, dem winkt ein Preis :-) + \end{enumerate} +\end{frame} + +\begin{frame} + \frametitle{Spiketrain Analyse I} + \framesubtitle{Rasterplot} + \begin{figure} + \centering + \includegraphics[width=0.375\columnwidth]{images/rasterplot} + \end{figure} + Wof\"ur eignet sich ein solcher Rasterplot (auch \textit{dotdisplay} genannt)? +\end{frame} + +\begin{frame} + \frametitle{Spiketrain Analyse I} + \framesubtitle{Rasterplot} + \"Ubung: + \begin{enumerate} + \item Ladet die Datei: spike\_times.mat aus dem Ilias Ordner + \item Schaut euch den Inhalt und skizziert wie das Problem gel\"ost werden k\"onnte. + \item Erzeugt einen Rasterplot. + \item Der sch\"onste wird pr\"amiert. + \end{enumerate} +\end{frame} + + +\begin{frame} + \frametitle{Spiketrain Analyse I} + \framesubtitle{PSTH} + \textbf{P}eri- \textbf{S}timulus - \textbf{T}ime - \textbf{H}istogram + \begin{figure} + \centering + %\includegraphics[width=0.375\columnwidth]{images/rasterplot} + \end{figure} + Wof\"ur eignet sich ein solcher Rasterplot (auch \textit{dotdisplay} genannt)? +\end{frame} + + + +\end{document} diff --git a/programming/lectures/programming_basics.tex b/programming/lectures/programming_basics.tex index 58036a6..9dc202e 100644 --- a/programming/lectures/programming_basics.tex +++ b/programming/lectures/programming_basics.tex @@ -97,6 +97,23 @@ \titlepage % erzeugt Titelseite \end{frame} +\begin{frame} + \frametitle{Grundlagen der Programmierung} + \frametitle{Resourcen} + \begin{enumerate} + \item Kursmaterialien auf Ilias \url{https://ovidius.uni-tuebingen.de/ilias3/goto.php?target=crs_869632&client_id=pr02} + \item Wintersemester 2014--2015 $\rightarrow$ 7 + Mathematisch--Naturwissenschaftliche Fakultät $\rightarrow$ Biologie + $\rightarrow$ Biologie -- Master $\rightarrow$ Neurobiologie + $\rightarrow$ W1 Einführung is wissenschaftlich + Datenverarbeitung\pause + \item Einloggen mit Uni-Kennung und Passwort + \item Zugriff auf den Kurs mit dem geheimen Passwort ``Spikes'' \pause + \item Ladet eure Lösungen in den entsprechenden Ordner hoch. + \end{enumerate} +\end{frame} + + \begin{frame} \frametitle{Grundlagen der Programmierung} \framesubtitle{Themen Woche 1} @@ -104,7 +121,7 @@ \item MATLAB Entwicklungsumgebung \item Variablen und Datentypen \item Vektoren und Matrizen - \item Boolsche Operationen + \item Boolesche Operationen \item Kontrollstrukturen \item Was ist ein Programm, Stil und Kommentare \item Vom Problem zum Algorithmus @@ -112,11 +129,13 @@ \item Graphische Darstellung von Neuro Daten, PSTH, Rasterplot, STA \item Fortgeschrittene Datenstrukturen \item String Parsing - \item Lesen und schreiben von Dateien, navigieren im Dateisystem + \item Lesen und schreiben von Dateien, Navigation im Dateisystem \end{enumerate} \end{frame} + \begin{frame} + \frametitle{Grundlagen der Programmierung} \frametitle{Themen Woche 1} \begin{figure} \centering @@ -125,6 +144,7 @@ \end{frame} \begin{frame} + \frametitle{Grundlagen der Programmierung} \frametitle{Themen Woche 1} \begin{figure} \centering @@ -139,7 +159,7 @@ \item [] Die MATLAB Entwicklungsumgebung \& Das Hilfesystem \item Variablen und Datentypen \item Skalare, Vektore und Matrizen - \item Boolsche Operatoren + \item Boolesche Operatoren \item Kontrollstrukturen \end{enumerate} \end{frame} @@ -175,11 +195,11 @@ \frametitle{Variablen} \framesubtitle{Datentypen} \begin{itemize} - \item \textit{integer} - Ganze zahlen. Hier gibt es mehrere - Unterarten, die wir in Matlab weitestgehend ignorieren koennen. + \item \textit{integer} - Ganze Zahlen. Hier gibt es mehrere + Unterarten, die wir in Matlab weitgehend ignorieren koennen. \item \textit{double} - Flie{\ss}kommazahlen. \item \textit{complex} - Komplexe Zahlen. - \item \textit{logical} - Bool'sche Werte, die als wahr + \item \textit{logical} - Boolesche Werte, die als wahr (\textit{true}) oder falsch (\textit{false}) interpretiert werden. \item \textit{char} - ASCII Zeichen \end{itemize} @@ -680,7 +700,7 @@ \begin{frame} \frametitle{Matrizen} -\framesubtitle{Nachtrag Indexierung} +\framesubtitle{Nachtrag: Lineare Indexierung} Alternativ zum ``subscript indexing'' koennen die Elemente von Matrizen auch linear addressiert werden. \begin{figure} \centering @@ -1014,14 +1034,14 @@ Alternativ zum ``subscript indexing'' koennen die Elemente von Matrizen auch lin \begin{enumerate} \item Benutze eine for-Schleife um all die Elemente zu loeschen, die (\verb+x(index) = [];+) kleiner als 5 sind. - \item Loesche alle Elemente die kleiner als 5 und groesser als 2 sind. + \item L\"osche alle Elemente die kleiner als 5 und groesser als 2 sind. \item Kann man das gleiche auch ohne eine Schleife erledigen? \end{enumerate} - \item Teste den Zufallsgenerator! Dazu zaehle die Anzahl der + \item Teste den Zufallsgenerator! Dazu z\"ahle die Anzahl der Elemente, die durch folgende Grenzen getrennt werden [0.2 0.4 0.6 0.8 1.0]. Speichere die Ergebnisse in einem passenden Vektor. Nutze eine Schleife um 1000 Zufallszahlen mit - \verb+rand()+ (siehe Hilfe) zu ziehen. Was waere die Erwartung, + \verb+rand()+ (siehe Hilfe) zu ziehen. Was w\"are die Erwartung, was kommt heraus? \end{enumerate} \end{frame} diff --git a/programming/lectures/scripts_functions.tex b/programming/lectures/scripts_functions.tex index 1596b2e..6b37880 100644 --- a/programming/lectures/scripts_functions.tex +++ b/programming/lectures/scripts_functions.tex @@ -341,7 +341,7 @@ function y = plot_sinus(frequenz, amplitude) Vektor \"ubergeben werden kann. Die Funktion soll alle m\"oglichen Kombinationen darstellen. \item Erweitere \verb+plotSinWave+ so, dass die berechnete Sinus in einer 2-D Matrize zurckgegeben werden. - \item Fuege zwei weitere R\"uckgabeparameter hinzu, die fuer jede + \item F\"uge zwei weitere R\"uckgabeparameter hinzu, die f\"ur jede Berechnung die Amplitude und Frequenz zur\"uckgeben. \end{enumerate} \end{frame} @@ -359,7 +359,7 @@ function y = plot_sinus(frequenz, amplitude) \frametitle{Vom Problem zum Algorithmus} \framesubtitle{Uff, schwierig...} \begin{enumerate} - \item Am besten faengt man mit einem weissen Blatt an. :-) \pause + \item Am besten f\"angt man mit einem wei\{ss}en Blatt an. :-) \pause \item Begr\"abt alle Angst vor Fehlern. \pause \item Macht sich klar, was das die Ausgangsituation ist.\pause \item Macht sich klar, was das Ziel ist.\pause @@ -371,8 +371,16 @@ function y = plot_sinus(frequenz, amplitude) \frametitle{Vom Problem zum Algorithmus} \framesubtitle{Uff, schwierig...} Wie w\"are es mit folgendem Problem:\\ - Ich habe die Aufnahme des Membranpotentials einer Nervenzelle und m\"ochte die - Anzahl und die Zeitpunkte der Aktionspotentiale ermitteln. + Ich habe die Aufnahme des Membranpotentials einer Nervenzelle... + \begin{enumerate} + \item ... und m\"ochte die Zeitpunkte der Aktionspotentiale ermitteln. + \item ... und m\"ochte die Anzahl der Aktionspotentiale wissen. + \end{enumerate}\pause + Aufgaben: + \begin{enumerate} + \item Formuliert geeignete Zwischenziele. + \item Entwickelt einen Ansatz um dieses Problem zu lösen. + \end{enumerate} \end{frame}