# HG changeset patch # User Madhusudan.C.S # Date 1256715418 -19800 # Node ID 0aa2964438c6d05a3c02fd75246db65522d81c77 # Parent 2833f0b51adcf9c87c7c9a751e6aafbcf466096c# Parent b69d0bdb136c4d826765dedccbe1340af346962b Merged Madhu and Mainline branches. diff -r 2833f0b51adc -r 0aa2964438c6 day1/session1.tex --- a/day1/session1.tex Wed Oct 28 13:00:46 2009 +0530 +++ b/day1/session1.tex Wed Oct 28 13:06:58 2009 +0530 @@ -122,6 +122,64 @@ %% % You might wish to add the option [pausesections] %% \end{frame} +\begin{frame} + \frametitle{Workshop Schedule: Day 1} + \begin{description} + \item[Session 1] Sat 09:00--10:00 + \item[Session 2] Sat 10:05--11:05 + \item[Session 3] Sat 11:20--12:20 + \item[Session 4] Sat 12:25--13:25 + \item Quiz -1 Sat 14:25--14:40 + \item[Session 5] Sat 14:40--15:40 + \item[Session 6] Sat 15:55--16:55 + \item Quiz -2 Sat 17:00--17:15 + \end{description} + + \begin{block}{Goal of the workshop} + At the end of this program, successful participants will be able to use python as their scripting and problem solving language. Aimed at Engg. students--focus on basic numerics and plotting-- but should serve a similar purpose for others. + \end{block} +\end{frame} + +\begin{frame} + \frametitle{Workshop Schedule: Day 2} + \begin{description} + \item[Session 1] Sun 09:00--10:00 + \item[Session 2] Sun 10:05--11:05 + \item[Session 3] Sun 11:20--12:20 + \item[Session 4] Sun 12:25--13:25 + \item Quiz -1 Sun 14:25--14:40 + \item[Session 5] Sun 14:40--15:40 + \item[Session 6] Sun 15:55--16:55 + \item Quiz -2 Sun 17:00--17:15 + \end{description} + +\begin{frame}{About the Workshop} + \begin{block}{Intended Audience} + \begin{itemize} + \item Engg., Mathematics and Science teachers. + \item Interested students from similar streams. + \end{itemize} + \end{block} + + \begin{block}{Goal:} + Successful participants will be able to + \begin{itemize} + \item use Python as their scripting and problem solving language. + \item train the students to use Python for the same + \end{itemize} + \end{block} +\end{frame} + +\end{frame} +\begin{frame}{Checklist} + \begin{block}{IPython} + Type ipython at the command line. Is it available? + \end{block} + \begin{block}{Editor} + We recommend scite. + \end{block} + \end{description} +\end{frame} \begin{frame}[fragile] \frametitle{Starting up...} diff -r 2833f0b51adc -r 0aa2964438c6 day1/session2.tex --- a/day1/session2.tex Wed Oct 28 13:00:46 2009 +0530 +++ b/day1/session2.tex Wed Oct 28 13:06:58 2009 +0530 @@ -261,7 +261,7 @@ \end{frame} \begin{frame}[fragile] - \frametitle{List operations} +\frametitle{List operations} \begin{lstlisting} In []: anthrlst = [6,7,8,9] In []: lnglst = lst + anthrlst @@ -279,12 +279,12 @@ \section{Simple Pendulum} \begin{frame}[fragile] \frametitle{Simple Pendulum - L and T} -Let us look at a more realistic example of the Simple Pendulum experiment. +Let us look at the example of the Simple Pendulum experiment. \begin{center} \begin{small} \begin{tabular}{| c | c | c |} \hline -L & T & $T^2$ \\ \hline +$L$ & $T$ & $T^2$ \\ \hline 0.1 & 0.6900 & \\ \hline 0.2 & 0.8989 & \\ \hline 0.3 & 1.1867 & \\ \hline @@ -366,9 +366,6 @@ Lets look at the pendulum.txt file. \begin{lstlisting} $cat data/pendulum.txt -\end{lstlisting} -%%$ -\begin{lstlisting} 1.0000e-01 6.9004e-01 1.1000e-01 6.9497e-01 1.2000e-01 7.4252e-01 diff -r 2833f0b51adc -r 0aa2964438c6 day1/session4.tex --- a/day1/session4.tex Wed Oct 28 13:00:46 2009 +0530 +++ b/day1/session4.tex Wed Oct 28 13:06:58 2009 +0530 @@ -96,13 +96,13 @@ \end{frame} } -%%\AtBeginSection[] -%%{ - %%\begin{frame} -%% \frametitle{Outline} - %% \tableofcontents[currentsection,currentsubsection] - %%\end{frame} -%%} +\AtBeginSection[] +{ + \begin{frame} + \frametitle{Outline} + \tableofcontents[currentsection,currentsubsection] + \end{frame} +} % If you wish to uncover everything in a step-wise fashion, uncomment % the following command: @@ -136,30 +136,73 @@ \begin{frame}[fragile] \frametitle{Matrices: Initializing} \begin{lstlisting} - In []: a = matrix([[1,2,3], - [4,5,6], - [7,8,9]]) +In []: A = ([[5, 2, 4], + [-3, 6, 2], + [3, -3, 1]]) - In []: a - Out[]: - matrix([[1, 2, 3], - [4, 5, 6], - [7, 8, 9]]) +In []: A +Out[]: [[5, 2, 4], + [-3, 6, 2], + [3, -3, 1]] \end{lstlisting} \end{frame} \subsection{Basic Operations} + +\begin{frame}[fragile] +\frametitle{Transpose of a Matrix} +\begin{lstlisting} +In []: linalg.transpose(A) +Out[]: +matrix([[ 5, -3, 3], + [ 2, 6, -3], + [ 4, 2, 1]]) +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Sum of all elements} + \begin{lstlisting} +In []: linalg.sum(A) +Out[]: 17 + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Matrix Addition} + \begin{lstlisting} +In []: B = matrix([[3,2,-1], + [2,-2,4], + [-1, 0.5, -1]]) + +In []: linalg.add(A, B) +Out[]: +matrix([[ 8. , 4. , 3. ], + [-1. , 4. , 6. ], + [ 2. , -2.5, 0. ]]) + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Matrix Multiplication} +\begin{lstlisting} +In []: linalg.multiply(A, B) +Out[]: +matrix([[ 15. , 4. , -4. ], + [ -6. , -12. , 8. ], + [ -3. , -1.5, -1. ]]) +\end{lstlisting} +\end{frame} + \begin{frame}[fragile] \frametitle{Inverse of a Matrix} - \begin{small} \begin{lstlisting} In []: linalg.inv(A) Out[]: -matrix([[ 0.07734807, 0.01657459, 0.32044199], - [ 0.09944751, -0.12154696, -0.01657459], - [-0.02762431, -0.07734807, 0.17127072]]) - +array([[ 0.28571429, -0.33333333, -0.47619048], + [ 0.21428571, -0.16666667, -0.52380952], + [-0.21428571, 0.5 , 0.85714286]]) \end{lstlisting} \end{small} \end{frame} @@ -167,16 +210,8 @@ \begin{frame}[fragile] \frametitle{Determinant} \begin{lstlisting} - In []: linalg.det(a) - Out[]: -9.5171266700777579e-16 -\end{lstlisting} -\end{frame} - -\begin{frame}[fragile] -\frametitle{Computing Norms} -\begin{lstlisting} - In []: linalg.norm(a) - Out[]: 16.881943016134134 +In []: det(A) +Out[]: 42.0 \end{lstlisting} \end{frame} @@ -184,19 +219,41 @@ \frametitle{Eigen Values and Eigen Matrix} \begin{small} \begin{lstlisting} - In []: linalg.eigvals(a) - Out[]: array([1.61168440e+01, -1.11684397e+00, -1.22196337e-15]) - - In []: linalg.eig(a) - Out[]: - (array([ 1.61168440e+01, -1.11684397e+00, -1.22196337e-15]), - matrix([[-0.23197069, -0.78583024, 0.40824829], - [-0.52532209, -0.08675134, -0.81649658], - [-0.8186735 , 0.61232756, 0.40824829]])) +In []: linalg.eig(A) +Out[]: +(array([ 7., 2., 3.]), + matrix([[-0.57735027, 0.42640143, 0.37139068], + [ 0.57735027, 0.63960215, 0.74278135], + [-0.57735027, -0.63960215, -0.55708601]])) \end{lstlisting} \end{small} \end{frame} +\begin{frame}[fragile] +\frametitle{Computing Norms} +\begin{lstlisting} + In []: linalg.norm(A) + Out[]: 10.63014581273465 +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Single Value Decomposition} + \begin{small} + \begin{lstlisting} +In []: linalg.svd(A) +Out[]: +(matrix([[-0.13391246, -0.94558684, -0.29653495], + [ 0.84641267, -0.26476432, 0.46204486], + [-0.51541542, -0.18911737, 0.83581192]]), + array([ 7.96445022, 7. , 0.75334767]), + matrix([[-0.59703387, 0.79815896, 0.08057807], + [-0.64299905, -0.41605821, -0.64299905], + [-0.47969029, -0.43570384, 0.7616163 ]])) + \end{lstlisting} + \end{small} +\end{frame} + \section{Solving linear equations} \begin{frame}[fragile] @@ -219,7 +276,9 @@ \frametitle{Solving using Matrices} Let us now look at how to solve this using \kwrd{matrices} \begin{lstlisting} - In []: A = matrix([[3,2,-1],[2,-2,4],[-1, 0.5, -1]]) + In []: A = matrix([[3,2,-1], + [2,-2,4], + [-1, 0.5, -1]]) In []: b = matrix([[1], [-2], [0]]) In []: x = linalg.solve(A, b) In []: Ax = dot(A, x) @@ -245,13 +304,24 @@ \end{lstlisting} \end{frame} +\section{Summary} \begin{frame} - \frametitle{Things we have learned} + \frametitle{Summary} +So what did we learn?? \begin{itemize} - \item - \item + \item Matrices + \begin{itemize} + \item Transpose + \item Addition + \item Multiplication + \item Inverse of a matrix + \item Determinant + \item Eigen values and Eigen matrix + \item Norms + \item Single Value Decomposition + \end{itemize} + \item Solving linear equations \end{itemize} \end{frame} \end{document} - diff -r 2833f0b51adc -r 0aa2964438c6 day2/3Dplotting.tex --- a/day2/3Dplotting.tex Wed Oct 28 13:00:46 2009 +0530 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,557 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Tutorial slides on Python. -% -% Author: Prabhu Ramachandran -% Copyright (c) 2005-2009, Prabhu Ramachandran -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\documentclass[compress,14pt]{beamer} -% \documentclass[handout]{beamer} -% \usepackage{pgfpages} -% \pgfpagesuselayout{4 on 1}[a4paper,border, shrink=5mm,landscape] -\usepackage{tikz} -\newcommand{\hyperlinkmovie}{} -%\usepackage{movie15} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Note that in presentation mode -% \paperwidth 364.19536pt -% \paperheight 273.14662pt -% h/w = 0.888 - - -\mode -{ - \usetheme{Warsaw} - %\usetheme{Boadilla} - %\usetheme{default} - \useoutertheme{split} - \setbeamercovered{transparent} -} - -% To remove navigation symbols -\setbeamertemplate{navigation symbols}{} - -\usepackage{amsmath} -\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} -\usepackage{pgf} - -\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} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% My Macros -\setbeamercolor{postit}{bg=yellow,fg=black} -\setbeamercolor{emphbar}{bg=blue!20, fg=black} -\newcommand{\emphbar}[1] -{\begin{beamercolorbox}[rounded=true]{emphbar} - {#1} - \end{beamercolorbox} -} -%{\centerline{\fcolorbox{gray!50} {blue!10}{ -%\begin{minipage}{0.9\linewidth} -% {#1} -%\end{minipage} -% }}} - -\newcommand{\myemph}[1]{\structure{\emph{#1}}} -\newcommand{\PythonCode}[1]{\lstinline{#1}} - -\newcommand{\tvtk}{\texttt{tvtk}} -\newcommand{\mlab}{\texttt{mlab}} - -\newcounter{time} -\setcounter{time}{0} -\newcommand{\inctime}[1]{\addtocounter{time}{#1}{\vspace*{0.1in}\tiny \thetime\ m}} - -\newcommand\BackgroundPicture[1]{% - \setbeamertemplate{background}{% - \parbox[c][\paperheight]{\paperwidth}{% - \vfill \hfill - \hfill \vfill -}}} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Configuring the theme -%\setbeamercolor{normal text}{fg=white} -%\setbeamercolor{background canvas}{bg=black} - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Title page -\title[]{3D data Visualization} - -\author[FOSSEE Team] {FOSSEE} - -\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay} -\date[] {1, November 2009\\Day 2, Session 3} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%\pgfdeclareimage[height=0.75cm]{iitblogo}{iitblogo} -%\logo{\pgfuseimage{iitblogo}} - -\AtBeginSection[] -{ - \begin{frame} - \frametitle{Outline} - \tableofcontents[currentsection,currentsubsection] - \end{frame} -} - -%% Delete this, if you do not want the table of contents to pop up at -%% the beginning of each subsection: -\AtBeginSubsection[] -{ - \begin{frame} - \frametitle{Outline} - \tableofcontents[currentsection,currentsubsection] - \end{frame} -} - -\AtBeginSection[] -{ - \begin{frame} - \frametitle{Outline} - \tableofcontents[currentsection,currentsubsection] - \end{frame} -} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% 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{3D Data Visualization} - -\begin{frame} - \frametitle{What is visualization?} - \Large - \begin{center} - Visual representation of data - \end{center} -\end{frame} - - -\begin{frame} - \frametitle{Is this new?} - \begin{center} - We have moved from: - \end{center} - \begin{columns} - \column{} - \hspace*{-1in} - \includegraphics[width=1.75in,height=1.75in, interpolate=true]{data/3832} - \column{}\hspace*{-0.25in} - To - \column{} - \hspace*{-1in} - \includegraphics[width=1.75in, height=1.75in, interpolate=true]{data/torus} - \end{columns} -\end{frame} - -\begin{frame} - \frametitle{3D visualization} - \Large - \begin{center} - Harder but important - \end{center} -\end{frame} - -\begin{frame} - \frametitle{Is this Graphics?} - \Large - \begin{center} - Visualization is about data! - \end{center} -\end{frame} - -\begin{frame} - \frametitle{Examples: trajectory in space} - \Large - \begin{center} - \pgfimage[width=2.5in]{MEDIA/m2/mlab/plot3d_ex} - \end{center} -\end{frame} - -\begin{frame} - \frametitle{Examples: Fire in a room} - \Large - \begin{center} - Demo of data - \end{center} -\inctime{10} -\end{frame} - -\section{Tools available} - -\subsection{mlab} - -\begin{frame} - {Overview} - \Large - \begin{itemize} - \item Simple - \item Convenient - \item Full-featured - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - - \frametitle{Getting started} - \myemph{\Large Vanilla:} - \begin{lstlisting}[language=bash] - $ ipython -wthread - \end{lstlisting} - \myemph{\Large with Pylab:} - \begin{lstlisting}[language=bash] - $ ipython -pylab -wthread - \end{lstlisting} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Using mlab} - - \begin{lstlisting} ->>> from enthought.mayavi import mlab - \end{lstlisting} - - \vspace*{0.5in} - - \myemph{\Large Try these} - - \vspace*{0.25in} - - \begin{lstlisting} ->>> mlab.test_ ->>> mlab.test_contour3d() ->>> mlab.test_contour3d?? - \end{lstlisting} -\end{frame} - -\begin{frame} - {Exploring the view} - \begin{columns} - \column{0.6\textwidth} - \pgfimage[width=3in]{MEDIA/m2/contour3d} - \column{0.4\textwidth} - \begin{itemize} - \item Mouse - \item Keyboard - \item Toolbar - \item Mayavi icon\pgfimage[width=0.2in]{MEDIA/m2/m2_icon} - \end{itemize} - \end{columns} -\end{frame} - -\begin{frame}[fragile] - \frametitle{plotting 3-D Surface: $x^2+y^2-z^2=1$} - \begin{lstlisting} -u,v = mgrid[-2:2:100j, -pi:pi:100j] -x=sqrt(u*u+1)*cos(v) -y=sqrt(u*u+1)*sin(v) -z=u -mlab.mesh(x,y,z) - \end{lstlisting} -\begin{figure} -\includegraphics[width=1in, height=1in, interpolate=true]{data/hyperboloid} -\end{figure} -\end{frame} - -\begin{frame}[fragile] - \frametitle{mgrid} - \begin{itemize} - \item Creates a multidimensional ``meshgrid'' - - \item In this particular case, creates 2 2D arrays: u,v. - \end{itemize} - \begin{lstlisting} -In []: mgrid[0:3,0:3] -Out[]: -array([[[0, 0, 0], - [1, 1, 1], - [2, 2, 2]], - - [[0, 1, 2], - [0, 1, 2], - [0, 1, 2]]]) - \end{lstlisting} -\end{frame} - -\begin{frame}[fragile] - \frametitle{mesh} - \begin{itemize} - \item Plots a surface from data supplied as 2D arrays. - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{\mlab\ plotting functions} - \begin{columns} - \column{0.25\textwidth} - \myemph{Points in 3D space} - \column{0.5\textwidth} - \pgfimage[width=2in]{MEDIA/m2/mlab/points3d_ex} - \end{columns} - - \begin{lstlisting} ->>> from numpy import * ->>> t = linspace(0, 2*pi, 50) ->>> u = cos(t)*pi ->>> x, y, z = sin(u), cos(u), sin(t) - \end{lstlisting} - \emphbar{\PythonCode{>>> mlab.points3d(x, y, z)}} -\end{frame} - -\begin{frame} - \begin{columns} - \column{0.25\textwidth} - \myemph{Connected points in 3D space} - \column{0.5\textwidth} - \pgfimage[width=2.5in]{MEDIA/m2/mlab/plot3d_ex} - \end{columns} - \emphbar{\PythonCode{>>> mlab.plot3d(x, y, z, t)}} - - Plots lines between the points - -\end{frame} - -\begin{frame}[fragile] - \begin{columns} - \column{0.25\textwidth} - \myemph{\Large 2D data} - \column{0.5\textwidth} - \pgfimage[width=2in]{MEDIA/m2/mlab/surf_ex} - \end{columns} - \begin{lstlisting} ->>> x, y = mgrid[-3:3:100j,-3:3:100j] ->>> z = sin(x*x + y*y) - \end{lstlisting} - - \emphbar{\PythonCode{>>> mlab.surf(x, y, z)}} - - \alert{Assumes the points are rectilinear} - -\end{frame} - -\begin{frame}[fragile] - \myemph{\Large 2D data: \texttt{mlab.mesh}} - \vspace*{0.25in} - - \emphbar{\PythonCode{>>> mlab.mesh(x, y, z)}} - - \alert{Points needn't be regular} - - \vspace*{0.25in} -\begin{lstlisting} ->>> phi, theta = numpy.mgrid[0:pi:20j, -... 0:2*pi:20j] ->>> x = sin(phi)*cos(theta) ->>> y = sin(phi)*sin(theta) ->>> z = cos(phi) ->>> mlab.mesh(x, y, z, -... representation= -... 'wireframe') -\end{lstlisting} - -\end{frame} - -\begin{frame}[fragile] - - \begin{columns} - \column{0.25\textwidth} - \myemph{\Large 3D data} - \column{0.5\textwidth} - \pgfimage[width=1.5in]{MEDIA/m2/mlab/contour3d}\\ - \end{columns} -\begin{lstlisting} ->>> x, y, z = ogrid[-5:5:64j, -... -5:5:64j, -... -5:5:64j] ->>> mlab.contour3d(x*x*0.5 + y*y + - z*z*2) -\end{lstlisting} -\end{frame} - -\begin{frame}[fragile] - - \myemph{\Large 3D vector data: \PythonCode{mlab.quiver3d}} - \vspace*{0.25in} - - \pgfimage[width=2in]{MEDIA/m2/mlab/quiver3d_ex}\\ - -\begin{lstlisting} ->>> mlab.test_quiver3d() -\end{lstlisting} - -\emphbar{\PythonCode{obj = mlab.quiver3d(x, y, z, u, v, w)}} -\inctime{20} -\end{frame} - - -\subsection{Mayavi2} - -\begin{frame} - \frametitle{Introduction to Mayavi} - \begin{itemize} - \item Most scientists not interested in details of visualization - \item Visualization of data files with a nice UI - \item Interactive visualization of data (think Matlab) - \item Embedding visualizations in applications - \item Customization - \end{itemize} - \pause - \begin{block}{The Goal} - Provide a \alert{flexible} library/app for every one of these needs! - \end{block} -\end{frame} - -\begin{frame} - {Overview of features} - \vspace*{-0.3in} - \begin{center} - \hspace*{-0.2in}\pgfimage[width=5in]{MEDIA/m2/m2_app3_3} - \end{center} -\end{frame} - - -\begin{frame} - \frametitle{Mayavi in applications} - \vspace*{-0.3in} - \begin{center} - \hspace*{-0.2in}\pgfimage[width=4.5in]{MEDIA/m2/m2_envisage} - \end{center} -\end{frame} - -\begin{frame} - \frametitle{Live in your dialogs} - \vspace*{0.1in} - \begin{center} - \hspace*{-0.2in}\pgfimage[width=2.5in]{MEDIA/m2/mlab_tui} - \end{center} -\end{frame} - -\begin{frame} - {Exploring the documentation} - \begin{center} - \pgfimage[width=4in]{MEDIA/m2/m2_ug_doc} - \end{center} -\end{frame} - - -\begin{frame} - \frametitle{Summary} - \begin{itemize} - \item \url{http://code.enthought.com/projects/mayavi} - \item Uses VTK (\url{www.vtk.org}) - \item BSD license - \item Linux, win32 and Mac OS X - \item Highly scriptable - \item Embed in Traits UIs (wxPython and PyQt4) - \item Envisage Plugins - \item Debian/Ubuntu/Fedora - \item \alert{Pythonic} - \end{itemize} - - \inctime{10} - -\end{frame} - -\begin{frame} - {Getting hands dirty!} - - \begin{block}{Motivational problem} - Atmospheric data of temperature over the surface of the earth. - Let temperature ($T$) vary linearly with height ($z$): - \begin{center} - $T = 288.15 - 6.5z$ - \end{center} - \end{block} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Simple solution} - - \begin{lstlisting} -lat = linspace(-89, 89, 37) -lon = linspace(0, 360, 37) -z = linspace(0, 100, 11) - \end{lstlisting} -\pause - \begin{lstlisting} -x, y, z = mgrid[0:360:37j,-89:89:37j, - 0:100:11j] -t = 288.15 - 6.5*z -mlab.contour3d(x, y, z, t) -mlab.outline() -mlab.colorbar() - \end{lstlisting} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Exercise: Lorenz equation} - \begin{columns} - \column{0.25\textwidth} - \begin{eqnarray*} - \frac{d x}{dt} &=& s (y-x)\\ - \frac{d y}{d t} &=& rx -y -xz\\ - \frac{d z}{d t} &=& xy - bz\\ - \end{eqnarray*} - \column{0.25\textwidth} - Let $s=10,$ - $r=28,$ - $b=8./3.$ - \end{columns} - \structure{\Large Region of interest} - \begin{lstlisting} -x, y, z = mgrid[-50:50:20j,-50:50:20j, - -10:60:20j] - \end{lstlisting} -\inctime{20} - -\end{frame} -\begin{frame}[fragile] - \frametitle{Solution} - \begin{lstlisting} -def lorenz(x,y,z,s=10.,r=28.,b=8./3.): - u = s*(y-x) - v = r*x-y-x*z - w = x*y-b*z - return u,v,w -x,y,z = mgrid [-50:50:20j,-50:50:20j, - -10:60:20j ] -u,v,w = lorenz( x , y , z ) -# Your plot here -# -mlab.show() - - \end{lstlisting} -\end{frame} - -\end{document} - diff -r 2833f0b51adc -r 0aa2964438c6 day2/session3.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/day2/session3.tex Wed Oct 28 13:06:58 2009 +0530 @@ -0,0 +1,516 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Tutorial slides on Python. +% +% Author: Prabhu Ramachandran +% Copyright (c) 2005-2009, Prabhu Ramachandran +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\documentclass[compress,14pt]{beamer} +% \documentclass[handout]{beamer} +% \usepackage{pgfpages} +% \pgfpagesuselayout{4 on 1}[a4paper,border, shrink=5mm,landscape] +\usepackage{tikz} +\newcommand{\hyperlinkmovie}{} +%\usepackage{movie15} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Note that in presentation mode +% \paperwidth 364.19536pt +% \paperheight 273.14662pt +% h/w = 0.888 + + +\mode +{ + \usetheme{Warsaw} + %\usetheme{Boadilla} + %\usetheme{default} + \useoutertheme{split} + \setbeamercovered{transparent} +} + +% To remove navigation symbols +\setbeamertemplate{navigation symbols}{} + +\usepackage{amsmath} +\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} +\usepackage{pgf} + +\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} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% My Macros +\setbeamercolor{postit}{bg=yellow,fg=black} +\setbeamercolor{emphbar}{bg=blue!20, fg=black} +\newcommand{\emphbar}[1] +{\begin{beamercolorbox}[rounded=true]{emphbar} + {#1} + \end{beamercolorbox} +} +%{\centerline{\fcolorbox{gray!50} {blue!10}{ +%\begin{minipage}{0.9\linewidth} +% {#1} +%\end{minipage} +% }}} + +\newcommand{\myemph}[1]{\structure{\emph{#1}}} +\newcommand{\PythonCode}[1]{\lstinline{#1}} + +\newcommand{\tvtk}{\texttt{tvtk}} +\newcommand{\mlab}{\texttt{mlab}} + +\newcounter{time} +\setcounter{time}{0} +\newcommand{\inctime}[1]{\addtocounter{time}{#1}{\vspace*{0.1in}\tiny \thetime\ m}} + +\newcommand\BackgroundPicture[1]{% + \setbeamertemplate{background}{% + \parbox[c][\paperheight]{\paperwidth}{% + \vfill \hfill + \hfill \vfill +}}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Configuring the theme +%\setbeamercolor{normal text}{fg=white} +%\setbeamercolor{background canvas}{bg=black} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Title page +\title[]{3D data Visualization} + +\author[FOSSEE Team] {FOSSEE} + +\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay} +\date[] {1, November 2009\\Day 2, Session 3} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%\pgfdeclareimage[height=0.75cm]{iitblogo}{iitblogo} +%\logo{\pgfuseimage{iitblogo}} + +\AtBeginSection[] +{ + \begin{frame} + \frametitle{Outline} + \tableofcontents[currentsection,currentsubsection] + \end{frame} +} + +%% Delete this, if you do not want the table of contents to pop up at +%% the beginning of each subsection: +\AtBeginSubsection[] +{ + \begin{frame} + \frametitle{Outline} + \tableofcontents[currentsection,currentsubsection] + \end{frame} +} + +\AtBeginSection[] +{ + \begin{frame} + \frametitle{Outline} + \tableofcontents[currentsection,currentsubsection] + \end{frame} +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 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{3D Data Visualization} + +\begin{frame} + \frametitle{What is visualization?} + \Large + \begin{center} + Visual representation of data + \end{center} +\end{frame} + + +\begin{frame} + \frametitle{Is this new?} + \begin{center} + We have moved from: + \end{center} + \begin{columns} + \column{} + \hspace*{-1in} + \includegraphics[width=1.75in,height=1.75in, interpolate=true]{data/3832} + \column{}\hspace*{-0.25in} + To + \column{} + \hspace*{-1in} + \includegraphics[width=1.75in, height=1.75in, interpolate=true]{data/torus} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{3D visualization} + \Large + \begin{center} + Harder but important + \end{center} +\end{frame} + +\begin{frame} + \frametitle{Is this Graphics?} + \Large + \begin{center} + Visualization is about data! + \end{center} +\end{frame} + +\begin{frame} + \frametitle{Examples: trajectory in space} + \Large + \begin{center} + \pgfimage[width=2.5in]{MEDIA/m2/mlab/plot3d_ex} + \end{center} +\end{frame} + +\begin{frame} + \frametitle{Examples: Fire in a room} + \Large + \begin{center} + Demo of data + \end{center} +\inctime{10} +\end{frame} + +\section{Tools available} + +\subsection{mlab} + +\begin{frame} + {Overview} + \Large + \begin{itemize} + \item Simple + \item Convenient + \item Full-featured + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + + \frametitle{Getting started} + \myemph{\Large Vanilla:} + \begin{lstlisting}[language=bash] + $ ipython -wthread + \end{lstlisting} + \myemph{\Large with Pylab:} + \begin{lstlisting}[language=bash] + $ ipython -pylab -wthread + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Using mlab} + + \begin{lstlisting} +>>> from enthought.mayavi import mlab + \end{lstlisting} + + \vspace*{0.5in} + + \myemph{\Large Try these} + + \vspace*{0.25in} + + \begin{lstlisting} +>>> mlab.test_ +>>> mlab.test_contour3d() +>>> mlab.test_contour3d?? + \end{lstlisting} +\end{frame} + +\begin{frame} + {Exploring the view} + \begin{columns} + \column{0.6\textwidth} + \pgfimage[width=3in]{MEDIA/m2/contour3d} + \column{0.4\textwidth} + \begin{itemize} + \item Mouse + \item Keyboard + \item Toolbar + \item Mayavi icon\pgfimage[width=0.2in]{MEDIA/m2/m2_icon} + \end{itemize} + \end{columns} +\end{frame} + +\begin{frame}[fragile] + \frametitle{\mlab\ plotting functions} + \begin{columns} + \column{0.25\textwidth} + \myemph{\Large 0D data} + \column{0.5\textwidth} + \pgfimage[width=2in]{MEDIA/m2/mlab/points3d_ex} + \end{columns} + + \begin{lstlisting} +>>> from numpy import * +>>> t = linspace(0, 2*pi, 50) +>>> u = cos(t)*pi +>>> x, y, z = sin(u), cos(u), sin(t) + \end{lstlisting} + \emphbar{\PythonCode{>>> mlab.points3d(x, y, z)}} +\end{frame} + +\begin{frame} + \begin{columns} + \column{0.25\textwidth} + \myemph{\Large 1D data} + \column{0.5\textwidth} + \pgfimage[width=2.5in]{MEDIA/m2/mlab/plot3d_ex} + \end{columns} + \emphbar{\PythonCode{>>> mlab.plot3d(x, y, z, t)}} + + Plots lines between the points + +\end{frame} + +\begin{frame}[fragile] + \begin{columns} + \column{0.25\textwidth} + \myemph{\Large 2D data} + \column{0.5\textwidth} + \pgfimage[width=2in]{MEDIA/m2/mlab/surf_ex} + \end{columns} + \begin{lstlisting} +>>> x, y = mgrid[-3:3:100j,-3:3:100j] +>>> z = sin(x*x + y*y) + \end{lstlisting} + + \emphbar{\PythonCode{>>> mlab.surf(x, y, z)}} + + \alert{Assumes the points are rectilinear} + +\end{frame} + +\begin{frame}[fragile] + \myemph{\Large 2D data: \texttt{mlab.mesh}} + \vspace*{0.25in} + + \emphbar{\PythonCode{>>> mlab.mesh(x, y, z)}} + + \alert{Points needn't be regular} + + \vspace*{0.25in} +\begin{lstlisting} +>>> phi, theta = numpy.mgrid[0:pi:20j, +... 0:2*pi:20j] +>>> x = sin(phi)*cos(theta) +>>> y = sin(phi)*sin(theta) +>>> z = cos(phi) +>>> mlab.mesh(x, y, z, +... representation= +... 'wireframe') +\end{lstlisting} + +\end{frame} + +\begin{frame}[fragile] + + \begin{columns} + \column{0.25\textwidth} + \myemph{\Large 3D data} + \column{0.5\textwidth} + \pgfimage[width=1.5in]{MEDIA/m2/mlab/contour3d}\\ + \end{columns} +\begin{lstlisting} +>>> x, y, z = ogrid[-5:5:64j, +... -5:5:64j, +... -5:5:64j] +>>> mlab.contour3d(x*x*0.5 + y*y + + z*z*2) +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + + \myemph{\Large 3D vector data: \PythonCode{mlab.quiver3d}} + \vspace*{0.25in} + + \pgfimage[width=2in]{MEDIA/m2/mlab/quiver3d_ex}\\ + +\begin{lstlisting} +>>> mlab.test_quiver3d() +\end{lstlisting} + +\emphbar{\PythonCode{obj = mlab.quiver3d(x, y, z, u, v, w)}} +\inctime{20} +\end{frame} + + +\subsection{Mayavi2} + +\begin{frame} + \frametitle{Introduction to Mayavi} + \begin{itemize} + \item Most scientists not interested in details of visualization + \item Visualization of data files with a nice UI + \item Interactive visualization of data (think Matlab) + \item Embedding visualizations in applications + \item Customization + \end{itemize} + \pause + \begin{block}{The Goal} + Provide a \alert{flexible} library/app for every one of these needs! + \end{block} +\end{frame} + +\begin{frame} + {Overview of features} + \vspace*{-0.3in} + \begin{center} + \hspace*{-0.2in}\pgfimage[width=5in]{MEDIA/m2/m2_app3_3} + \end{center} +\end{frame} + + +\begin{frame} + \frametitle{Mayavi in applications} + \vspace*{-0.3in} + \begin{center} + \hspace*{-0.2in}\pgfimage[width=4.5in]{MEDIA/m2/m2_envisage} + \end{center} +\end{frame} + +\begin{frame} + \frametitle{Live in your dialogs} + \vspace*{0.1in} + \begin{center} + \hspace*{-0.2in}\pgfimage[width=2.5in]{MEDIA/m2/mlab_tui} + \end{center} +\end{frame} + +\begin{frame} + {Exploring the documentation} + \begin{center} + \pgfimage[width=4in]{MEDIA/m2/m2_ug_doc} + \end{center} +\end{frame} + + +\begin{frame} + \frametitle{Summary} + \begin{itemize} + \item \url{http://code.enthought.com/projects/mayavi} + \item Uses VTK (\url{www.vtk.org}) + \item BSD license + \item Linux, win32 and Mac OS X + \item Highly scriptable + \item Embed in Traits UIs (wxPython and PyQt4) + \item Envisage Plugins + \item Debian/Ubuntu/Fedora + \item \alert{Pythonic} + \end{itemize} + + \inctime{10} + +\end{frame} + +\begin{frame} + {Getting hands dirty!} + + \begin{block}{Motivational problem} + Atmospheric data of temperature over the surface of the earth. + Let temperature ($T$) vary linearly with height ($z$): + \begin{center} + $T = 288.15 - 6.5z$ + \end{center} + \end{block} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Simple solution} + + \begin{lstlisting} +lat = linspace(-89, 89, 37) +lon = linspace(0, 360, 37) +z = linspace(0, 100, 11) + \end{lstlisting} +\pause + \begin{lstlisting} +x, y, z = mgrid[0:360:37j,-89:89:37j, + 0:100:11j] +t = 288.15 - 6.5*z +mlab.contour3d(x, y, z, t) +mlab.outline() +mlab.colorbar() + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Exercise: Lorenz equation} + \begin{columns} + \column{0.25\textwidth} + \begin{eqnarray*} + \frac{d x}{dt} &=& s (y-x)\\ + \frac{d y}{d t} &=& rx -y -xz\\ + \frac{d z}{d t} &=& xy - bz\\ + \end{eqnarray*} + \column{0.25\textwidth} + Let $s=10,$ + $r=28,$ + $b=8./3.$ + \end{columns} + \structure{\Large Region of interest} + \begin{lstlisting} +x, y, z = mgrid[-50:50:20j,-50:50:20j, + -10:60:20j] + \end{lstlisting} +\inctime{20} + +\end{frame} +\begin{frame}[fragile] + \frametitle{Solution} + \begin{lstlisting} +def lorenz(x,y,z,s=10.,r=28.,b=8./3.): + u = s*(y-x) + v = r*x-y-x*z + w = x*y-b*z + return u,v,w +x,y,z = mgrid [-50:50:20j,-50:50:20j, + -10:60:20j ] +u,v,w = lorenz( x , y , z ) +# Your plot here +# +mlab.show() + + \end{lstlisting} +\end{frame} + +\end{document} +