day1/session1.tex
branchscipyin2010
changeset 439 d85c3ed8545c
parent 427 66d296ff31b9
child 455 84b7a3f4a15a
equal deleted inserted replaced
438:8af5dfa5432b 439:d85c3ed8545c
    75 \title[Interactive Plotting]{Python for Science and Engg: Interactive Plotting}
    75 \title[Interactive Plotting]{Python for Science and Engg: Interactive Plotting}
    76 
    76 
    77 \author[FOSSEE group] {FOSSEE}
    77 \author[FOSSEE group] {FOSSEE}
    78 
    78 
    79 \institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay}
    79 \institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay}
    80 \date[] {SciPy 2010, Introductory tutorials,\\
    80 \date[] {SciPy.in 2010, Tutorials}
    81 Day 1, Session 1}
       
    82 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    81 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    83 
    82 
    84 %\pgfdeclareimage[height=0.75cm]{iitmlogo}{iitmlogo}
    83 %\pgfdeclareimage[height=0.75cm]{iitmlogo}{iitmlogo}
    85 %\logo{\pgfuseimage{iitmlogo}}
    84 %\logo{\pgfuseimage{iitmlogo}}
    86 
    85 
   120 %% \begin{frame}
   119 %% \begin{frame}
   121 %%   \frametitle{Outline}
   120 %%   \frametitle{Outline}
   122 %%   \tableofcontents
   121 %%   \tableofcontents
   123 %%   % You might wish to add the option [pausesections]
   122 %%   % You might wish to add the option [pausesections]
   124 %% \end{frame}
   123 %% \end{frame}
   125 
       
   126 \begin{frame}
       
   127     \frametitle{Acknowledgement}
       
   128     \Large
       
   129     \begin{center}
       
   130         \alert{FOSSEE group (\url{fossee.in})} \\
       
   131         based at\\ 
       
   132         \alert{IIT Bombay}\\
       
   133         and funded by\\
       
   134         The National Mission on Education through ICT, \\
       
   135         \alert{Ministry of HRD, India}
       
   136     \end{center}
       
   137 \end{frame}
       
   138 
       
   139 \begin{frame}
       
   140   \frametitle{Tutorial Schedule: Day 1}
       
   141   \begin{description}
       
   142 	\item[Session 1-2] 08:00--10:00
       
   143 	\item[Coffee Break] 10:00--10:20
       
   144 	\item[Session 3-4] 10:20--12:20
       
   145 	\item[Lunch Break] 12:20--13:40
       
   146         \item[Quiz 1] 13:40--13:55
       
   147         \item[Exercises] 14:00--14:40
       
   148         \item[Session 5] 14:40--15:40
       
   149 	\item[Coffee Break] 15:40--16:00
       
   150         \item[Quiz 2] 16:00--16:15
       
   151         \item[Session 6-7] 16:15--18:00
       
   152   \end{description}
       
   153 \end{frame}
       
   154 
       
   155 \begin{frame}
       
   156   \frametitle{Tutorial Schedule: Day 2}
       
   157   \begin{description}
       
   158 	\item[Session 1] 08:00--9:00
       
   159 	\item[Session 2] 9:00--10:00
       
   160 	\item[Coffee] 10:00--10:20
       
   161         \item[Quiz 3] 10:20--10:35
       
   162         \item[Exercises] 10:35--11:30
       
   163         \item[Session 3] 11:30--12:20
       
   164   \end{description}
       
   165 \end{frame}
       
   166 
   124 
   167 \section{Checklist}
   125 \section{Checklist}
   168 \begin{frame}
   126 \begin{frame}
   169 \frametitle{Checklist}
   127 \frametitle{Checklist}
   170   \begin{enumerate}
   128   \begin{enumerate}
   189       \item \typ{smoothing.gif}
   147       \item \typ{smoothing.gif}
   190       \end{itemize}
   148       \end{itemize}
   191   \end{enumerate}
   149   \end{enumerate}
   192 \end{frame}
   150 \end{frame}
   193 
   151 
   194 \begin{frame}
       
   195   \frametitle{About the Tutorial}
       
   196   \begin{block}{Intended Audience}
       
   197   \begin{itemize}
       
   198        \item Engg., Mathematics and Science researchers with a
       
   199            reasonable programming background.
       
   200   \end{itemize}
       
   201   \end{block}  
       
   202 
       
   203   \begin{block}{Goal: Successful participants will be able to}
       
   204     \begin{itemize}
       
   205       \item Use Python as plotting, computational tool.
       
   206       \item Understand how to use Python as a scripting and problem solving language.
       
   207     \end{itemize}
       
   208   \end{block}
       
   209 \end{frame}
       
   210 
       
   211 %% \begin{frame}[fragile]
       
   212 %% \frametitle{The Python interpreter \ldots}
       
   213 %% \begin{block}{}
       
   214 %% \begin{lstlisting}
       
   215 %%   $ python
       
   216 %% \end{lstlisting} %$
       
   217 %% \end{block}
       
   218 %% \begin{lstlisting}     
       
   219 %%   >>> print "Hello, World!"
       
   220 %%   Hello, World!
       
   221 %% \end{lstlisting}
       
   222 %% Exiting
       
   223 %% \begin{lstlisting}     
       
   224 %%   >>> ^D(Ctrl-D)
       
   225 %%   $
       
   226 %% \end{lstlisting} %$
       
   227 %% \end{frame}
       
   228 
       
   229 \section{Starting up IPython}
   152 \section{Starting up IPython}
   230 \begin{frame}[fragile]
   153 \begin{frame}[fragile]
   231 \frametitle{Starting up \ldots}
   154 \frametitle{Starting up \ldots}
   232 \begin{block}{}
   155 \begin{block}{}
   233 \begin{lstlisting}
   156 \begin{lstlisting}
   240 \end{lstlisting}
   163 \end{lstlisting}
   241 Exiting
   164 Exiting
   242 \begin{lstlisting}
   165 \begin{lstlisting}
   243   In []: ^D(Ctrl-D)
   166   In []: ^D(Ctrl-D)
   244   Do you really want to exit([y]/n)? y
   167   Do you really want to exit([y]/n)? y
   245 \end{lstlisting}
       
   246 \end{frame}
       
   247 
       
   248 %% \section{Ipython with magic}
       
   249 %% \begin{frame}[fragile]
       
   250 %% \frametitle{Let the magic begin \ldots}
       
   251 %% \begin{itemize}
       
   252 %% \item \alert{IPython is an improved interpreter}\\
       
   253 %% \item \alert{Recommended for Scientific and Computing work}\\
       
   254 %% \end{itemize}
       
   255 %% \begin{block}{}
       
   256 %% \begin{lstlisting}
       
   257 %%   $ ipython -pylab  
       
   258 %% \end{lstlisting} %$
       
   259 %% \end{block}
       
   260 %% \end{frame}
       
   261 
       
   262 \section{Breaking out of loops}
       
   263 \begin{frame}[fragile]
       
   264 \frametitle{Breaking out of Loops}
       
   265 Breaking out of loops
       
   266 \begin{lstlisting}     
       
   267   In []: while True:
       
   268     ...:     print "Hello, World!"
       
   269     ...:     
       
   270   Hello, World!
       
   271   Hello, World!^C(Ctrl-C)
       
   272   ------------------------------------
       
   273   KeyboardInterrupt                   
       
   274 \end{lstlisting}
   168 \end{lstlisting}
   275 \end{frame}
   169 \end{frame}
   276 
   170 
   277 \section{Plotting}
   171 \section{Plotting}
   278 \subsection{Drawing plots}
   172 \subsection{Drawing plots}
   349 In []: ylabel('sin(2y)')
   243 In []: ylabel('sin(2y)')
   350   \end{lstlisting}
   244   \end{lstlisting}
   351 \end{frame}
   245 \end{frame}
   352 
   246 
   353 \begin{frame}[fragile]
   247 \begin{frame}[fragile]
   354 \frametitle{IPython tips \ldots}
   248 \frametitle{Title}
   355 
       
   356 \begin{itemize}
       
   357     \item Use \typ{TAB} to complete command 
       
   358 \end{itemize}
       
   359         \vspace*{0.5in}
       
   360 
       
   361         {\Large \structure{History}}
       
   362 \begin{itemize}
       
   363     \item Accesses history (also from past sessions)
       
   364 
       
   365     \item Up and down arrows (\typ{Ctrl-p}/\typ{Ctrl-n})
       
   366 
       
   367     \item Search: \typ{Ctrl-r} and start typing
       
   368 
       
   369     \item \typ{Ctrl-a}: go to start of line
       
   370 
       
   371     \item \typ{Ctrl-e}: end of line
       
   372 
       
   373     \item \typ{Ctrl-k}: kill to end of line
       
   374 \end{itemize}
       
   375 
       
   376 \end{frame}
       
   377 
       
   378 
       
   379 \subsection{More decoration}
       
   380 \begin{frame}[fragile]
       
   381 \frametitle{Title and Legends}
       
   382 \vspace*{-0.15in}
   249 \vspace*{-0.15in}
   383 %  \begin{block}{}
   250 %  \begin{block}{}
   384 %  \small
   251 %  \small
   385 \begin{lstlisting}
   252 \begin{lstlisting}
   386 In []: title('Sinusoids')
   253 In []: title('Sinusoids')
   387 In []: legend(['sin(2y)'])
       
   388 \end{lstlisting}
   254 \end{lstlisting}
   389 %  \small
   255 %  \small
   390 %  \end{block}
   256 %  \end{block}
   391   \vspace*{-0.1in}
   257   \vspace*{-0.1in}
   392   \begin{center}
   258   \begin{center}
   393   \includegraphics[height=2in, interpolate=true]{data/legend}  
   259   \includegraphics[height=2in, interpolate=true]{data/title}  
   394   \end{center}
   260   \end{center}
   395 \end{frame}
   261 \end{frame}
   396 
       
   397 \begin{frame}[fragile]
       
   398 \frametitle{Legend Placement}
       
   399 \begin{block}{}
       
   400     \small
       
   401 \begin{lstlisting}
       
   402 In []: legend(['sin(2y)'], loc = 'center')
       
   403 \end{lstlisting}
       
   404 \end{block}
       
   405 
       
   406 \begin{columns}
       
   407     \column{0.6\textwidth}
       
   408  \includegraphics[height=2in, interpolate=true]{data/position}  
       
   409 \column{0.45\textwidth}
       
   410 \vspace{-0.2in}
       
   411 \begin{lstlisting}
       
   412 'best' 
       
   413 'right'
       
   414 'center'
       
   415 \end{lstlisting}
       
   416 \end{columns}
       
   417 \end{frame}
       
   418 
       
   419 %% \begin{frame}[fragile]
       
   420 %%   \frametitle{For arbitrary location}
       
   421 %% \vspace*{-0.1in}
       
   422 %% \begin{lstlisting}
       
   423 %% In []: legend(['sin(2y)'], loc=(.8,.1)) 
       
   424 %% \end{lstlisting}
       
   425 %% \emphbar{Specify south-east corner position}
       
   426 %% %\vspace*{-0.2in}
       
   427 %% \begin{center}
       
   428 %%   \includegraphics[height=2in, interpolate=true]{data/loc}  
       
   429 %% \end{center}
       
   430 %% %\inctime{10}
       
   431 %% \end{frame}
       
   432 
   262 
   433 \begin{frame}[fragile]
   263 \begin{frame}[fragile]
   434 \frametitle{Saving \& Closing}
   264 \frametitle{Saving \& Closing}
   435 \begin{lstlisting}
   265 \begin{lstlisting}
   436 In []: savefig('sin.png')
   266 In []: savefig('sin.png')
   448 \item rgba
   278 \item rgba
   449 \item svg
   279 \item svg
   450 \end{itemize}
   280 \end{itemize}
   451 \end{frame}
   281 \end{frame}
   452 
   282 
       
   283 \begin{frame}[fragile]
       
   284 \frametitle{IPython tips \ldots}
       
   285 
       
   286 \begin{itemize}
       
   287     \item Use \typ{TAB} to complete command 
       
   288 \end{itemize}
       
   289         \vspace*{0.5in}
       
   290 
       
   291         {\Large \structure{History}}
       
   292 \begin{itemize}
       
   293     \item Accesses history (also from past sessions)
       
   294 
       
   295     \item Up and down arrows (\typ{Ctrl-p}/\typ{Ctrl-n})
       
   296 \end{itemize}
       
   297 
       
   298 \end{frame}
       
   299 
   453 \section{Multiple plots}
   300 \section{Multiple plots}
   454 \begin{frame}[fragile]
   301 \begin{frame}[fragile]
   455 \frametitle{Overlaid Plots}
   302 \frametitle{Overlaid Plots}
   456 \begin{lstlisting}
   303 \begin{lstlisting}
   457 In []: clf()
   304 In []: clf()
   458 In []: plot(y, sin(y))
   305 In []: plot(y, sin(y))
   459 In []: plot(y, cos(y))
   306 In []: plot(y, cos(y))
   460 In []: xlabel('y')
   307 In []: xlabel('y')
   461 In []: ylabel('f(y)')
   308 In []: ylabel('f(y)')
       
   309 \end{lstlisting}
       
   310 \emphbar{By default plots would be overlaid!}
       
   311 \end{frame}
       
   312 
       
   313 \begin{frame}[fragile]
       
   314 \frametitle{Legend}
       
   315 \vspace*{-0.15in}
       
   316 %  \begin{block}{}
       
   317 %  \small
       
   318 \begin{lstlisting}
   462 In []: legend(['sin(y)', 'cos(y)']) 
   319 In []: legend(['sin(y)', 'cos(y)']) 
   463 \end{lstlisting}
   320 \end{lstlisting}
   464 \emphbar{By default plots would be overlaid!}
   321 %  \small
       
   322 %  \end{block}
       
   323   \vspace*{-0.1in}
       
   324   \begin{center}
       
   325   \includegraphics[height=2in, interpolate=true]{data/legend}  
       
   326   \end{center}
       
   327 \end{frame}
       
   328 
       
   329 \begin{frame}[fragile]
       
   330 \frametitle{Legend Placement}
       
   331 \begin{block}{}
       
   332     \small
       
   333 \begin{lstlisting}
       
   334 In []: legend(['sin(y)', 'cos(y)'], loc='center')
       
   335 \end{lstlisting}
       
   336 \end{block}
       
   337 
       
   338 \begin{columns}
       
   339     \column{0.6\textwidth}
       
   340  \includegraphics[height=2in, interpolate=true]{data/position}  
       
   341 \column{0.45\textwidth}
       
   342 \vspace{-0.2in}
       
   343 \begin{lstlisting}
       
   344 'best' 
       
   345 'right'
       
   346 'center'
       
   347 \end{lstlisting}
       
   348 \end{columns}
   465 \end{frame}
   349 \end{frame}
   466 
   350 
   467 \begin{frame}[fragile]
   351 \begin{frame}[fragile]
   468 \frametitle{Plotting separate figures}
   352 \frametitle{Plotting separate figures}
   469 \begin{lstlisting}
   353 \begin{lstlisting}
   616 \begin{block}{}
   500 \begin{block}{}
   617 \typ{\%save script_name line_numbers}
   501 \typ{\%save script_name line_numbers}
   618 \end{block}
   502 \end{block}
   619 Line numbers can be specified individually separated by spaces or as a range separated by a dash.\\
   503 Line numbers can be specified individually separated by spaces or as a range separated by a dash.\\
   620 \begin{block}{}
   504 \begin{block}{}
   621 \typ{\%save four_plot.py} \alert{\typ{  16 18-27}} \\  
   505 \typ{\%save four_plot.py} \alert{\typ{  16-18 21 25 27-32}} \\  
   622 \end{block}
   506 \end{block}
   623 This saves from the history the commands entered on line numbers \alert{16, 18, 19, 20, \ldots 27}
   507 This saves from the history the commands entered on line numbers \alert{16, 17, 18, 21, 25, 27, 28, 29, 30, 31, 32}
   624 \end{frame}
   508 \end{frame}
   625 
   509 
   626 \begin{frame}
   510 \begin{frame}
   627 \frametitle{Python Scripts\ldots}
   511 \frametitle{Python Scripts\ldots}
   628 Now, four\_plot.py is called a Python Script.
   512 Now, four\_plot.py is called a Python Script.
   635 To avoid this, run using \alert{\typ{\%run -i four_plot.py}}\\
   519 To avoid this, run using \alert{\typ{\%run -i four_plot.py}}\\
   636 \end{block}
   520 \end{block}
   637 \end{frame}
   521 \end{frame}
   638 
   522 
   639 \begin{frame}[fragile]
   523 \begin{frame}[fragile]
   640   \frametitle{Result graph}
   524 \frametitle{Doing this in Sage\ldots}
   641   \begin{center}
   525  \begin{itemize}
   642     \includegraphics[height=3in, interpolate=true]{data/four_plot}
   526  \item Change the language to =Python= 
   643   \end{center}
   527  \item Make a simple plot and save it
       
   528    \begin{lstlisting}
       
   529      from pylab import *
       
   530      x = linspace(0, 2*pi, 50)
       
   531      plot(x, sin(x))
       
   532      savefig('sample-sin.png')
       
   533    \end{lstlisting}
       
   534  \end{itemize}
   644 \end{frame}
   535 \end{frame}
   645 
   536 
   646 \begin{frame}[fragile]
   537 \begin{frame}[fragile]
   647   \frametitle{What did we learn?}
   538   \frametitle{What did we learn?}
   648   \begin{itemize}
   539   \begin{itemize}
   653     \item Changing the looks: size, linewidth
   544     \item Changing the looks: size, linewidth
   654     \item Accessing history, documentation
   545     \item Accessing history, documentation
   655     \item \kwrd{\%hist} - History of commands
   546     \item \kwrd{\%hist} - History of commands
   656     \item \kwrd{\%save} - Saving commands 
   547     \item \kwrd{\%save} - Saving commands 
   657     \item Running a script using \kwrd{\%run -i}
   548     \item Running a script using \kwrd{\%run -i}
       
   549     \item Using \lstinline|pylab| in Sage
   658   \end{itemize}
   550   \end{itemize}
   659 \end{frame}
   551 \end{frame}
   660 
   552 
   661 \end{document}
   553 \end{document}
   662 
   554