diff options
author | Prabhu Ramachandran | 2016-12-22 00:57:49 +0530 |
---|---|---|
committer | Prabhu Ramachandran | 2016-12-22 00:57:49 +0530 |
commit | 302e107705fcb1191b73941d568614c5fa41aea5 (patch) | |
tree | ab64c8907d72bf6fcc8cefa650fc447718fe1aa7 /scipy/basic | |
parent | d51061d7cbf97369fbb980409f64ad91aa1fcb73 (diff) | |
download | python-workshops-302e107705fcb1191b73941d568614c5fa41aea5.tar.gz python-workshops-302e107705fcb1191b73941d568614c5fa41aea5.tar.bz2 python-workshops-302e107705fcb1191b73941d568614c5fa41aea5.zip |
Split session 1 into two parts.
Diffstat (limited to 'scipy/basic')
-rw-r--r-- | scipy/basic/session1a.tex (renamed from scipy/basic/session1.tex) | 279 | ||||
-rw-r--r-- | scipy/basic/session1b.tex | 474 |
2 files changed, 474 insertions, 279 deletions
diff --git a/scipy/basic/session1.tex b/scipy/basic/session1a.tex index 729f50c..ded2a91 100644 --- a/scipy/basic/session1.tex +++ b/scipy/basic/session1a.tex @@ -659,285 +659,6 @@ In []: plot?? \end{center} \end{frame} -\begin{frame}[fragile] -\frametitle{Review Problem \ldots} -\alert{Plotting \ldots} -\begin{lstlisting} -In []: x = linspace(-5*pi, 5*pi, 500) -In []: plot(x, x, 'b') -In []: plot(x, -x, 'b') -In []: plot(x, sin(x), 'g', linewidth=2) -In []: plot(x, x*sin(x), 'r', - linewidth=3) -\end{lstlisting} -$\vdots$ -\end{frame} - -\begin{frame}[fragile] -\frametitle{Review Problem \ldots} -\alert{Legend \& Annotation\ldots} -\begin{lstlisting} -In []: legend(['x', '-x', 'sin(x)', - 'xsin(x)']) -In []: annotate('origin', xy = (0, 0)) -\end{lstlisting} -\alert{Setting Axes limits\ldots} -\begin{lstlisting} -In []: xlim(-5*pi, 5*pi) -In []: ylim(-5*pi, 5*pi) -\end{lstlisting} -\inctime{5} -\end{frame} - -\section{Scripts -- Saving \& Running} -\begin{frame}[fragile] -\frametitle{Command History} -Use the \typ{\%hist} \alert{magic} command of IPython -\typ{In []: \%hist}\\ -This displays the ``Command History'' -\begin{block}{Careful about errors!} - \kwrd{\%hist} will contain the errors as well.\\ -\end{block} -\pause -\begin{block}{Magic Commands?} - Magic commands are commands provided by IPython to make our life easier. -\end{block} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Saving commands into script} -Use the \typ{\%save} \alert{magic} command of IPython -\begin{block}{} -\typ{\%save script_name line_numbers} -\end{block} -Line numbers specified individually separated by spaces or as a range separated by a dash.\\ -\begin{block}{} -\typ{\%save four_plot.py} \alert{\typ{ 16 18-27}} \\ -\end{block} -Saves from history the commands entered on line numbers \alert{16, 18, 19, 20, \ldots 27} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Saving commands into a script} - \begin{itemize} - \item Save lines relevant for the review problem - \item Hint: example\\ \typ{\%save four_plot.py 16 18-27} - \item Choose the lines carefully - \item Edit \typ{four_plot.py} on Canopy - \item Make sure all the lines are correct - \item Save the script - \end{itemize} -\inctime{5} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Creating scripts: alternative} - \begin{itemize} - \item Create a new file on Canopy - \item Copy commands for assignment with your mouse - \item Save the script to \typ{four_plot.py} - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Where is the script saved?} - \begin{itemize} - \item \typ{\%save} saves into the current directory - \vspace*{0.5in} - \item Use \typ{\%pwd} to print the current directory - \item Use \typ{\%cd} to change the directory - \end{itemize} -\end{frame} - - -\begin{frame}[fragile] -\frametitle{Python Scripts\ldots} -Now, \typ{four_plot.py} is called a Python Script. - \begin{itemize} - \item run the script in IPython using \typ{\%run four_plot.py}\\ - \end{itemize} -\pause -\alert{\typ{NameError: name 'linspace' is not defined}} -\begin{block}{} -To avoid this, run using \alert{\typ{\%run -i four_plot.py}}\\ -\end{block} -\pause -Where is the plot? -\begin{lstlisting} -In []: show() -\end{lstlisting} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Exercise} - \begin{itemize} - \item Add the \typ{show()} command to \typ{four_plot.py} - \item Save the file - \item Test that it works - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Result graph} - \begin{center} - \includegraphics[height=3in, interpolate=true]{data/four_plot} - \end{center} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Running with Python} - \begin{itemize} - \item Start a new Canopy terminal - \item Change directory to where you saved \typ{four_plot.py} - \item Run the script as: - \end{itemize} -\begin{lstlisting} - $ python four_plot.py -\end{lstlisting} - \pause - Do you see: - \begin{small} -\begin{lstlisting} -NameError: name 'linspace' is not defined -\end{lstlisting} - \end{small} -\inctime{5} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Imports} - \begin{itemize} - \item \typ{ipython --pylab} does magic - \item Import libraries using \typ{import} - \end{itemize} -\begin{lstlisting} -In []: from pylab import linspace -\end{lstlisting} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Exercise} - \begin{itemize} - \item Add \typ{from pylab import linspace} to top of \typ{four_plot.py} - \item Test that it works - \end{itemize} -\begin{lstlisting} -# four_plot.py -from pylab import linspace # <-- added -x = linspace(-5*pi, 5*pi, 500) -plot(x, x, 'b') -... -\end{lstlisting} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Try again} - \begin{itemize} - \item On Canopy terminal - \item Run the script as: - \end{itemize} -\begin{lstlisting} - $ python four_plot.py -\end{lstlisting} - \pause - \vspace*{0.15in} - Do you see: - \begin{small} -\begin{lstlisting} -NameError: name 'plot' is not defined -\end{lstlisting} - \end{small} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Exercise} - \begin{itemize} - \item Change line 1 to \typ{from pylab import *} - \item Test that it works - \end{itemize} -\begin{lstlisting} -# four_plot.py -from pylab import * # <-- added -x = linspace(-5*pi, 5*pi, 500) -plot(x, x, 'b') -... -\end{lstlisting} -\inctime{5} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Solution} - \small -\begin{lstlisting} -from pylab import * -x = linspace(-5*pi, 5*pi, 500) -plot(x, x, 'b') -plot(x, -x, 'b') -plot(x, sin(x), 'g', linewidth=2) -plot(x, x*sin(x), 'r', linewidth=3) -legend(['x', '-x', 'sin(x)', - 'xsin(x)']) -annotate('origin', xy = (0, 0)) -xlim(-5*pi, 5*pi) -ylim(-5*pi, 5*pi) -show() -\end{lstlisting} -\end{frame} - - - -\begin{frame}[fragile] - \frametitle{What did we learn?} - \begin{itemize} - \item Starting up IPython - \item Creating simple plots - \item Annotating: labels, legends, annotation - \item Changing the looks: color, linewidth - \item Accessing history, documentation - \item \kwrd{\%hist} - History of commands - \item Creating a Python script with \typ{\%save} - \item Running a script using \kwrd{\%run -i} - \item Importing functionality - \item Running a script with\ \typ{python script.py} - \end{itemize} -\end{frame} - -\begin{frame} - \frametitle{Using Canopy} - \begin{itemize} - \item Much easier - \item Write code in the editor - \item Embedded IPython - \item Save (Ctrl-S or Cmd-S) - \item Run selection: Ctrl-Shift-R (Cmd-Shift-R on OS X) - \item Run code: Ctrl-R (Cmd-R on OS X) - \item Change directory with menu (\typ{\%cd}) - \end{itemize} - \inctime{5} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Note on script file names} - \begin{itemize} - \item Should start with a letter - \item Can use \typ{_} (underscore) and numbers - \item No \typ{.} allowed - \item No spaces or special characters - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Test} - \begin{itemize} - \item \typ{1_script.py} - \item \typ{script_1.py} - \item \typ{one11.py} - \item \typ{one script.py} - \item \typ{one,script;xxx.py} - \item \typ{one.two.py} - \end{itemize} -\end{frame} - \end{document} %% Questions for Quiz %% diff --git a/scipy/basic/session1b.tex b/scipy/basic/session1b.tex new file mode 100644 index 0000000..87b2a8a --- /dev/null +++ b/scipy/basic/session1b.tex @@ -0,0 +1,474 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%Tutorial slides on Python. +% +% Author: FOSSEE +% Copyright (c) 2009-2016, FOSSEE, IIT Bombay +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\documentclass[14pt,compress]{beamer} + +% Modified from: generic-ornate-15min-45min.de.tex +\mode<presentation> +{ + \usetheme{Warsaw} + \useoutertheme{infolines} + \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[Interactive Plotting]{Introductory Scientific Computing with +Python} +\subtitle{Saving scripts} + +\author[FOSSEE] {FOSSEE} + +\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay} +\date[] {Mumbai, India +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%\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} + \maketitle +\end{frame} + +%% \begin{frame} +%% \frametitle{Outline} +%% \tableofcontents +%% % You might wish to add the option [pausesections] +%% \end{frame} + +\section{Exercise} + +\begin{frame}[plain,fragile] +\frametitle{Review Problem} +\begin{enumerate} +\item Plot $x, -x, \sin(x), x \sin(x)$ in range $-5\pi$ to $5\pi$ +\item Add a legend +\item Annotate the origin +\item Set axes limits to the range of x +\end{enumerate} +\vspace*{-0.15in} +\begin{center} + \includegraphics[height=2.6in, interpolate=true]{data/four_plot} +\end{center} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Review Problem \ldots} +\alert{Plotting \ldots} +\begin{lstlisting} +In []: x = linspace(-5*pi, 5*pi, 500) +In []: plot(x, x, 'b') +In []: plot(x, -x, 'b') +In []: plot(x, sin(x), 'g', linewidth=2) +In []: plot(x, x*sin(x), 'r', + linewidth=3) +\end{lstlisting} +$\vdots$ +\end{frame} + +\begin{frame}[fragile] +\frametitle{Review Problem \ldots} +\alert{Legend \& Annotation\ldots} +\begin{lstlisting} +In []: legend(['x', '-x', 'sin(x)', + 'xsin(x)']) +In []: annotate('origin', xy = (0, 0)) +\end{lstlisting} +\alert{Setting Axes limits\ldots} +\begin{lstlisting} +In []: xlim(-5*pi, 5*pi) +In []: ylim(-5*pi, 5*pi) +\end{lstlisting} +\inctime{5} +\end{frame} + +\section{Scripts -- Saving \& Running} +\begin{frame}[fragile] +\frametitle{Command History} +Use the \typ{\%hist} \alert{magic} command of IPython +\typ{In []: \%hist}\\ +This displays the ``Command History'' +\begin{block}{Careful about errors!} + \kwrd{\%hist} will contain the errors as well.\\ +\end{block} +\pause +\begin{block}{Magic Commands?} + Magic commands are commands provided by IPython to make our life easier. +\end{block} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Saving commands into script} +Use the \typ{\%save} \alert{magic} command of IPython +\begin{block}{} +\typ{\%save script_name line_numbers} +\end{block} +Line numbers specified individually separated by spaces or as a range separated by a dash.\\ +\begin{block}{} +\typ{\%save four_plot.py} \alert{\typ{ 16 18-27}} \\ +\end{block} +Saves from history the commands entered on line numbers \alert{16, 18, 19, 20, \ldots 27} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Saving commands into a script} + \begin{itemize} + \item Save lines relevant for the review problem + \item Hint: example\\ \typ{\%save four_plot.py 16 18-27} + \item Choose the lines carefully + \item Edit \typ{four_plot.py} on Canopy + \item Make sure all the lines are correct + \item Save the script + \end{itemize} +\inctime{5} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Creating scripts: alternative} + \begin{itemize} + \item Create a new file on Canopy + \item Copy commands for assignment with your mouse + \item Save the script to \typ{four_plot.py} + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Where is the script saved?} + \begin{itemize} + \item \typ{\%save} saves into the current directory + \vspace*{0.5in} + \item Use \typ{\%pwd} to print the current directory + \item Use \typ{\%cd} to change the directory + + \vspace*{0.5in} + \item Question: how do you find out more about \typ{\%cd}? + \end{itemize} +\end{frame} + + +\begin{frame}[fragile] +\frametitle{Python Scripts\ldots} +Now, \typ{four_plot.py} is called a Python Script. + \begin{itemize} + \item run the script in IPython using \typ{\%run four_plot.py}\\ + \end{itemize} +\pause +\alert{\typ{NameError: name 'linspace' is not defined}} +\begin{block}{} +To avoid this, run using \alert{\typ{\%run -i four_plot.py}}\\ +\end{block} +\pause +Where is the plot? +\begin{lstlisting} +In []: show() +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Exercise} + \begin{itemize} + \item Add the \typ{show()} command to \typ{four_plot.py} + \item Save the file + \item Test that it works + \end{itemize} + \inctime{5} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Result graph} + \begin{center} + \includegraphics[height=3in, interpolate=true]{data/four_plot} + \end{center} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Running with Python} + \begin{itemize} + \item Start a new Canopy terminal + \item Change directory to where you saved \typ{four_plot.py} + \item Run the script as: + \end{itemize} +\begin{lstlisting} + $ python four_plot.py +\end{lstlisting} + \pause + Do you see: + \begin{small} +\begin{lstlisting} +NameError: name 'linspace' is not defined +\end{lstlisting} + \end{small} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Imports} + \begin{itemize} + \item \typ{ipython --pylab} does magic + \item Import libraries using \typ{import} + \end{itemize} +\begin{lstlisting} +In []: from pylab import linspace +\end{lstlisting} +\inctime{5} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Exercise} + \begin{itemize} + \item Add \typ{from pylab import linspace} to top of \typ{four_plot.py} + \item Test that it works + \end{itemize} +\begin{lstlisting} +# four_plot.py +from pylab import linspace # <-- added +x = linspace(-5*pi, 5*pi, 500) +plot(x, x, 'b') +... +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Try again} + \begin{itemize} + \item On Canopy terminal + \item Run the script as: + \end{itemize} +\begin{lstlisting} + $ python four_plot.py +\end{lstlisting} + \pause + \vspace*{0.15in} + Do you see: + \begin{small} +\begin{lstlisting} +NameError: name 'plot' is not defined +\end{lstlisting} + \end{small} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Exercise} + \begin{itemize} + \item Change line 1 to \typ{from pylab import *} + \item Test that it works + \end{itemize} +\begin{lstlisting} +# four_plot.py +from pylab import * # <-- added +x = linspace(-5*pi, 5*pi, 500) +plot(x, x, 'b') +... +\end{lstlisting} +\inctime{5} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Solution} + \small +\begin{lstlisting} +from pylab import * +x = linspace(-5*pi, 5*pi, 500) +plot(x, x, 'b') +plot(x, -x, 'b') +plot(x, sin(x), 'g', linewidth=2) +plot(x, x*sin(x), 'r', linewidth=3) +legend(['x', '-x', 'sin(x)', 'xsin(x)']) +annotate('origin', xy = (0, 0)) +xlim(-5*pi, 5*pi) +ylim(-5*pi, 5*pi) +show() +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Note on script file names} + \begin{itemize} + \item Should start with a letter + \item Can use \typ{_} (underscore) and numbers + \item No \typ{.} allowed + \item No spaces or special characters + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Test} + \begin{itemize} + \item \typ{1_script.py} + \item \typ{script_1.py} + \item \typ{one11.py} + \item \typ{one script.py} + \item \typ{one,script;xxx.py} + \item \typ{one.two.py} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Using Canopy} + \begin{itemize} + \item Much easier + \item Write code in the editor + \item Embedded IPython + \item Save (Ctrl-S or Cmd-S) + \item Run selection: Ctrl-Shift-R (Cmd-Shift-R on OS X) + \item Run code: Ctrl-R (Cmd-R on OS X) + \item Change directory with menu (\typ{\%cd}) + \end{itemize} + \inctime{5} +\end{frame} + + +\begin{frame}[fragile] + \frametitle{What did we learn?} + \begin{itemize} + \item Starting up IPython + \item Creating simple plots + \item Annotating: labels, legends, annotation + \item Changing the looks: color, linewidth + \item Accessing history, documentation + \item \kwrd{\%hist} - History of commands + \item Creating a Python script with \typ{\%save} + \item Running a script using \kwrd{\%run -i} + \item Importing functionality + \item Running a script with\ \typ{python script.py} + \end{itemize} +\end{frame} + + +\end{document} + +%% Questions for Quiz %% +%% ------------------ %% + +\begin{frame}[fragile] +\frametitle{\incqno } +Draw (roughly) the plot obtained by the following: +\begin{lstlisting} +In []: x = linspace(0, pi, 3) +In []: plot(x, sin(x)) +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{\incqno } +Describe the plot produced by the following: +\begin{lstlisting} +In []: x = linspace(0, 2*pi, 50) +In []: plot(x, cos(x), 'go') +\end{lstlisting} +\end{frame} + +\begin{frame} +\frametitle{\incqno } +How will you plot the previous graph with line width set to 3? How will +you set the $x$ and $y$ labels of the plot? +\end{frame} + +\begin{frame} +\frametitle{\incqno } +How will you set the x and y axis limits so that the region of interest +is in the rectangle $(0, -1.5)$ (left bottom coordinate) and $(2\pi, +1.5)$ (right top coordinate)? +\end{frame} + +\begin{frame} +\frametitle{\incqno } +What ipython magic command do you use to obtain the lines of code you have already typed in the interpreter? What command do you use to save them? +\end{frame} + +\begin{frame}[fragile] +\frametitle{\incqno } +The following code snippet has an error/bug: +\begin{lstlisting} +In []: y = linspace(0, 2*pi, 50) +In []: plot(y, sin(y)) +In []: clf() +In []: plot(y, cos(y)) +In []: legend(['sin(y)', 'cos(y)']) +\end{lstlisting} +What is the error? How do you fix it? +\end{frame} |