%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Tutorial slides on Python.
%
% Author: FOSSEE
% Copyright (c) 2009, FOSSEE, IIT Bombay
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\documentclass[14pt,compress]{beamer}
%\documentclass[draft]{beamer}
%\documentclass[compress,handout]{beamer}
%\usepackage{pgfpages} 
%\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm]

% Modified from: generic-ornate-15min-45min.de.tex
\mode<presentation>
{
  \usetheme{Warsaw}
  \useoutertheme{split}
  \setbeamercovered{transparent}
}

\usepackage[english]{babel}
\usepackage[latin1]{inputenc}
%\usepackage{times}
\usepackage[T1]{fontenc}

% Taken from Fernando's slides.
\usepackage{ae,aecompl}
\usepackage{mathpazo,courier,euler}
\usepackage[scaled=.95]{helvet}

\definecolor{darkgreen}{rgb}{0,0.5,0}

\usepackage{listings}
\lstset{language=Python,
    basicstyle=\ttfamily\bfseries,
    commentstyle=\color{red}\itshape,
  stringstyle=\color{darkgreen},
  showstringspaces=false,
  keywordstyle=\color{blue}\bfseries}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Macros
\setbeamercolor{emphbar}{bg=blue!20, fg=black}
\newcommand{\emphbar}[1]
{\begin{beamercolorbox}[rounded=true]{emphbar} 
      {#1}
 \end{beamercolorbox}
}
\newcounter{time}
\setcounter{time}{0}
\newcommand{\inctime}[1]{\addtocounter{time}{#1}{\tiny \thetime\ m}}

\newcommand{\typ}[1]{\lstinline{#1}}

\newcommand{\kwrd}[1]{ \texttt{\textbf{\color{blue}{#1}}}  }

%%% This is from Fernando's setup.
% \usepackage{color}
% \definecolor{orange}{cmyk}{0,0.4,0.8,0.2}
% % Use and configure listings package for nicely formatted code
% \usepackage{listings}
% \lstset{
%    language=Python,
%    basicstyle=\small\ttfamily,
%    commentstyle=\ttfamily\color{blue},
%    stringstyle=\ttfamily\color{orange},
%    showstringspaces=false,
%    breaklines=true,
%    postbreak = \space\dots
% }


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Title page
\title[Plotting using Python]{Plotting experimental data\\}

\author[FOSSEE] {FOSSEE}

\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay}
\date[] {31, October 2009\\Day 1, Session 2}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%\pgfdeclareimage[height=0.75cm]{iitmlogo}{iitmlogo}
%\logo{\pgfuseimage{iitmlogo}}


%% Delete this, if you do not want the table of contents to pop up at
%% the beginning of each subsection:
\AtBeginSubsection[]
{
  \begin{frame}<beamer>
    \frametitle{Outline}
    \tableofcontents[currentsection,currentsubsection]
  \end{frame}
}

\AtBeginSection[]
{
  \begin{frame}<beamer>
    \frametitle{Outline}
    \tableofcontents[currentsection,currentsubsection]
  \end{frame}
}

% If you wish to uncover everything in a step-wise fashion, uncomment
% the following command: 
%\beamerdefaultoverlayspecification{<+->}

%\includeonlyframes{current,current1,current2,current3,current4,current5,current6}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DOCUMENT STARTS
\begin{document}

\begin{frame}
  \titlepage
\end{frame}

\begin{frame}
  \frametitle{Outline}
  \tableofcontents
  % You might wish to add the option [pausesections]
\end{frame}

\section{Creating and running scripts}
\begin{frame}[fragile]
\frametitle{Python Scripts}
\begin{itemize}
\item Let us now put all the commands used in the review problem into a file. 
\item The following commands of IPython help us do this. 
\end{itemize}
\begin{lstlisting}
  In []: %hist
  In []: %hist -n
\end{lstlisting}
\end{frame}

\begin{frame}
\frametitle{Python Scripts\ldots}
  \begin{itemize}
    \item Open a new file in an \alert{editor}
    \item Copy and paste required lines from the output of \typ{\%hist -n}
    \item Save the file as \typ{first_plot.py}
  \end{itemize}
  \begin{itemize}
  \item run the file in IPython using \typ{\%run first_plot.py}\\
  \end{itemize}
\end{frame}

\section{Plotting Points}
\begin{frame}[fragile]
\frametitle{Simple Pendulum - L and T}
  \begin{itemize}
    \item Given data of Length and Time-period of a Simple pendulum 
    \item We wish to plot L vs. \alert{$T^2$}
  \end{itemize}    
\begin{lstlisting}
In []: L = [0.1,  0.2,  0.3,  
            0.4,  0.5,  0.6,  
            0.7,  0.8,  0.9]
In []: T = [0.6529, 0.8485, 1.0590, 
            1.2390, 1.4124, 1.5061, 
            1.6441, 1.7949, 1.8758]
\end{lstlisting}
\end{frame}

\begin{frame}[fragile]
\frametitle{Simple Pendulum \ldots}
\begin{itemize}
\item Let us begin with $L$ vs. \alert{$T$}
\end{itemize}
\begin{lstlisting}
  In []: plot(L, T)
\end{lstlisting}
\begin{itemize}
\item But we wish to plot points!
\end{itemize}
\end{frame}

\begin{frame}[fragile]
\frametitle{Plotting points}
\begin{lstlisting}
  In []: clf()

  In []: plot(L, T, 'o')
  Out[]: [<matplotlib.lines.Line2D object at 0xac17e0c>]

  In []: clf()
  In []: plot(L, T, '.')
  Out[]: [<matplotlib.lines.Line2D object at 0xac17e0c>]
\end{lstlisting}
\end{frame}

\begin{frame}[fragile]
\frametitle{Plotting Attributes}
\begin{itemize}
  \item \kwrd{'o'} - Dots
  \item \kwrd{'-'} - Lines
  \item \kwrd{'- -'} - Dashed lines
\end{itemize}
\end{frame}

\begin{frame}[fragile]
\frametitle{Plotting \it{L} vs \it{T^2}}
\begin{lstlisting}
In []: TSq = []

In []: for t in T:
 ....:     TSq.append(t*t)

In []: plot(L, TSq, '.')
Out[]: [<matplotlib.lines.Line2D object at 0xa5b05ac>]
\end{lstlisting}
\end{frame}

\begin{frame}{So what did we learn here??}
  \begin{itemize}
    \item lists
    \item \alert{\kwrd{for}}
  \end{itemize}
\end{frame}

\section{Lists}
\begin{frame}[fragile]
  \frametitle{How to create and use lists?}
\begin{lstlisting}
In []: lst = [1,2,3,4] 

In []: lst[0]+lst[1]+lst[-1]
Out[]: 7
\end{lstlisting}
\end{frame}

\begin{frame}[fragile]
  \frametitle{List: Slicing}
  \typ{list[initial:final:step]}
\begin{lstlisting}
In []: lst[1:3]  # A slice.
Out[]: [2, 3]

In []: lst[1:-1]
Out[]: [2, 3]
\end{lstlisting}
\end{frame}

\begin{frame}[fragile]
  \frametitle{List methods}
\begin{lstlisting}
In []: lst.append([6,7])
In []: lst
Out[]: [1, 2, 3, 4, 5, [6, 7]]
\end{lstlisting}
%\inctime{10}
\end{frame}

\begin{frame}[fragile]
\frametitle{\typ{for}}
Used to iterate over lists\\ Let us look at another example.
\begin{lstlisting}
In []: lst = [1,2,3,4,5,6]
In []: for num in lst:
 ....:     print num, num*num
 ....:    
1 1
2 4
3 9
4 16
5 25
6 36
\end{lstlisting}
\end{frame}

\section{File Handling}
\begin{frame}[fragile]
    \frametitle{File and \kwrd{for}}
\begin{lstlisting}
In []: f = open('dummyfile')

In []: for line in f:
    ...:     print line
    ...:  
\end{lstlisting}
\inctime{5}
\end{frame}

\section{Strings}
\begin{frame}{Strings}
Anything within ``quotes'' is a string!
\end{frame}

\begin{frame}[fragile]\frametitle{Strings and \typ{split()}}
  \begin{lstlisting}
In []: a = 'hello world'

In []: a.split()
Out[]: ['hello', 'world']
  \end{lstlisting}
Now try this:
  \begin{lstlisting}
In []: b = 'KD, MCS, PC, SC, SV'

In []: b.split(',')
Out[]: ['KD', 'MCS', 'PC', 'SC', 'SV']
  \end{lstlisting}
\inctime{5}
\end{frame}

\section{Plotting points}


\end{document}
