Updated for day1 of GRD workshop.
authorSantosh G. Vattam <vattam.santosh@gmail.com>
Mon, 08 Mar 2010 20:45:33 +0530
changeset 379 682b6f66fe11
parent 378 2299700a8b97
child 380 669b72283b55
Updated for day1 of GRD workshop.
day1/day1quiz1.tex
day1/day1quiz2.tex
day1/session1.tex
day1/session2.tex
day1/session3.tex
day1/session4.tex
day1/session5.tex
day1/session6.tex
--- a/day1/day1quiz1.tex	Fri Mar 05 23:59:12 2010 +0530
+++ b/day1/day1quiz1.tex	Mon Mar 08 20:45:33 2010 +0530
@@ -55,6 +55,7 @@
     \item Name:
     \item University/College/Company:
     \item Student/Teacher/Professional:
+    \item Field of interest/study:
   \end{itemize}
 \end{frame}
 
@@ -204,17 +205,17 @@
 In []: marks = [10, 20, 30, 50, 55, 
                 75, 83] 
 \end{lstlisting}
-Given the above marks, how will you calculate the \alert{mean} and
-\alert{standard deviation}?
+Given the above marks, how will you calculate the \alert{mean}?%%  and
+%% \alert{standard deviation}?
 \end{frame}
 
-\begin{frame}[fragile]
-\frametitle{\incqno }
-\begin{lstlisting}
-In []: marks = [10, 20, 30, 50, 55, 
-                75, 83] 
-\end{lstlisting}
-How will you convert the list \texttt{marks} to an \alert{array}?
-\end{frame}
+%% \begin{frame}[fragile]
+%% \frametitle{\incqno }
+%% \begin{lstlisting}
+%% In []: marks = [10, 20, 30, 50, 55, 
+%%                 75, 83] 
+%% \end{lstlisting}
+%% How will you convert the list \texttt{marks} to an \alert{array}?
+%% \end{frame}
 
 \end{document}
--- a/day1/day1quiz2.tex	Fri Mar 05 23:59:12 2010 +0530
+++ b/day1/day1quiz2.tex	Mon Mar 08 20:45:33 2010 +0530
@@ -58,6 +58,7 @@
     \item Name:
     \item University/College/Company:
     \item Student/Teacher/Professional:
+    \item Field of interest/study:
   \end{itemize}
 \end{frame}
 
@@ -170,10 +171,10 @@
 \texttt{Ax = b}?
 \end{frame}
 
-\begin{frame}
-\frametitle{\incqno }
-What command will you use if you wish to integrate a system of ODEs?
-\end{frame}
+%% \begin{frame}
+%% \frametitle{\incqno }
+%% What command will you use if you wish to integrate a system of ODEs?
+%% \end{frame}
 
 \begin{frame}
 \frametitle{\incqno }
--- a/day1/session1.tex	Fri Mar 05 23:59:12 2010 +0530
+++ b/day1/session1.tex	Mon Mar 08 20:45:33 2010 +0530
@@ -154,24 +154,24 @@
 \frametitle{Checklist}
   \begin{enumerate}
     \item IPython
-    \item Editor
+    \item Editor - we recommend \alert{scite}
     \item Data files: 
       \begin{itemize}
-      \item \typ{sslc1.txt}
-      \item \typ{pendulum.txt}
-      \item \typ{points.txt}
-      \item \typ{pos.txt}
-      \item \typ{holmes.txt}
+      \item \typ{sslc/sslc1.txt}
+      \item \typ{pendulum/pendulum.txt}
+      \item \typ{motion-plot/pos.txt}
+      \item \typ{word-freq/holmes.txt}
+      \item \typ{anagrams/anag.txt}
       \end{itemize}
     \item Python scripts: 
       \begin{itemize}
-      \item \typ{sslc_allreg.py}
-      \item \typ{sslc_science.py}
+      \item \typ{sslc/sslc_allreg.py}
+      \item \typ{sslc/sslc_science.py}
       \end{itemize}
     \item Images
       \begin{itemize}
-      \item \typ{lena.png}
-      \item \typ{smoothing.gif}
+      \item \typ{lena/lena.png}
+      \item \typ{smoothing/smoothing.gif}
       \end{itemize}
   \end{enumerate}
 \end{frame}
@@ -210,8 +210,6 @@
   >>> ^D(Ctrl-D)
   $
 \end{lstlisting} %$
-\alert{Note the change in the prompt}\\
-\alert{IPython provides many additional features}\\
 \end{frame}
 
 \section{Starting up Ipython}
@@ -231,13 +229,16 @@
   In []: ^D(Ctrl-D)
   Do you really want to exit([y]/n)? y
 \end{lstlisting}
-\alert{IPython is an improved interpreter}\\
-\alert{Recommended for use in Scientific Computing work}\\
+An alternative to IPython is bpython
 \end{frame}
 
 \section{Ipython with magic}
 \begin{frame}[fragile]
 \frametitle{Let the magic begin \ldots}
+\begin{itemize}
+\item \alert{IPython is an improved interpreter}\\
+\item \alert{Recommended for Scientific and Computing work}\\
+\end{itemize}
 \begin{block}{}
 \begin{lstlisting}
   $ ipython -pylab  
@@ -397,6 +398,17 @@
 
 In []: close()
 \end{lstlisting}
+Supported formats to store images:
+\begin{itemize}
+\item png
+\item eps - Easy to embed in Latex files
+\item emf
+\item pdf
+\item ps
+\item raw
+\item rgba
+\item svg
+\end{itemize}
 \end{frame}
 
 \section{Multiple plots}
@@ -459,16 +471,23 @@
 \end{frame}
 
 \begin{frame}[fragile]
-\frametitle{Axes lengths}
-\emphbar{Get the axes limits}
+\frametitle{Getting axes lengths}
   \begin{lstlisting}
-In []: xmin, xmax = xlim() 
-In []: ymin, ymax = ylim() 
+In []: orig_xmin, orig_xmax = xlim() 
+In []: orig_ymin, orig_ymax = ylim() 
   \end{lstlisting}
-\emphbar{Set the axes limits}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Set the axes limits}
   \begin{lstlisting}
-In []: xlim(xmin, 2*pi) 
-In []: ylim(ymin-0.2, ymax+0.2) 
+In []: up_xmin = orig_xmin
+In []: up_xmax = 2*pi
+In []: up_ymin = ymin-0.2
+In []: up_ymax = ymax+0.2
+
+In []: xlim(up_xmin, up_xmax)
+In []: ylim(up_ymin, up_ymax)
   \end{lstlisting}
 \end{frame}
 
@@ -516,40 +535,55 @@
 \end{frame}
 
 \begin{frame}[fragile]
-\frametitle{Saving Commands}
-Save commands of review problem into file
-\begin{itemize}
-\item Use \typ{\%hist} command of IPython 
-\item Identify the required line numbers
-\item Then, use \typ{\%save} command of IPython 
-\end{itemize}
+\frametitle{Command History}
+Use the \typ{\%hist} \alert{magic} command of IPython 
 \typ{In []: \%hist}\\
-\typ{In []: \%save four_plot.py} \alert{\typ{16 18-27}} 
+This displays all the commands typed in so far aka Command History.
 \begin{block}{Careful about errors!}
-  \kwrd{\%hist} will contain the errors as well,\\
-  so be careful while selecting line numbers.
+  \kwrd{\%hist} will contain the errors as well.\\
+\end{block}
+\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{In []: \%save script_name line_numbers}
+\end{block}
+Line numbers can be specified individually separated by commas or as a range separated by a dash.\\
+\begin{block}{}
+\typ{In []: \%save four_plot.py} \alert{\typ{16 18-27}} \\  
+\end{block}
+This saves from the history the commands entered on line numbers \alert{16, 18, 19, 20, \ldots 27}
+\end{frame}
+
 \begin{frame}
 \frametitle{Python Scripts\ldots}
- This is called a Python Script.
+Now, four\_plot.py is called a Python Script.
  \begin{itemize}
- \item run the script in IPython using \typ{\%run -i four_plot.py}\\
+ \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}
 \end{frame}
 
 \begin{frame}[fragile]
   \frametitle{What did we learn?}
   \begin{itemize}
     \item Starting up IPython
-    \item \kwrd{\%hist} - History of commands
-    \item \kwrd{\%save} - Saving commands 
-    \item Running a script using \kwrd{\%run -i}
     \item Creating simple plots.
     \item Adding labels and legends.
     \item Annotating plots.
     \item Changing the looks: size, linewidth
+    \item \kwrd{\%hist} - History of commands
+    \item \kwrd{\%save} - Saving commands 
+    \item Running a script using \kwrd{\%run -i}
   \end{itemize}
 \end{frame}
 
--- a/day1/session2.tex	Fri Mar 05 23:59:12 2010 +0530
+++ b/day1/session2.tex	Mon Mar 08 20:45:33 2010 +0530
@@ -210,6 +210,9 @@
 \begin{lstlisting}
 In []: p = [ 2, 3, 5, 7] 
 
+In []: p[1]
+Out[]: 3
+
 In []: p[0]+p[1]+p[-1]
 Out[]: 12
 \end{lstlisting}
@@ -301,19 +304,12 @@
 \begin{lstlisting}
 In []: tsq = []
 
-In []: len(l)
-Out[]: 9
-
-In []: len(t)
-Out[]: 9
-
 In []: for time in t:
  ....:     tsq.append(time*time)
  ....:
  ....:
 
-In []: plot(l, tsq)
-Out[]: [<matplotlib.lines.Line2D object at 0xa5b05ac>]
+In []: print len(l), len(t), len(tsq)
 \end{lstlisting}
 This gives \kwrd{tsq} which is the list of squares of \typ{t} values.
 \end{frame}
@@ -327,7 +323,6 @@
      ....:     
      ....:     
 
-    In []: print tsq, len(tsq)
     In []: plot(l, tsq)
   \end{lstlisting}
 \end{frame}
@@ -343,26 +338,23 @@
 \alert{Data is usually present in a file!} \\
 Lets look at the \typ{pendulum.txt} file.
 \begin{lstlisting} 
-$ cat pendulum.txt 
+In []: cd circulate/pendulum/
+In []: cat pendulum.txt 
 1.0000e-01 6.9004e-01
 1.1000e-01 6.9497e-01
 1.2000e-01 7.4252e-01
 1.3000e-01 7.5360e-01
-1.4000e-01 8.3568e-01
-1.5000e-01 8.6789e-01
 \end{lstlisting}  %$
 \ldots
-\begin{block}{Windows users:}
-  C:> type pendulum.txt
-\end{block}
 \end{frame}
 
 \begin{frame}[fragile]
 \frametitle{Reading \typ{pendulum.txt}}
 \begin{itemize}
+  \item File contains L vs. T values 
+  \item First Column - L values
+  \item Second Column - T values
   \item Let us generate a plot from the data file
-  \item File contains L vs. T values 
-  \item L - Column1; T - Column2
 \end{itemize}
 \end{frame}
 
--- a/day1/session3.tex	Fri Mar 05 23:59:12 2010 +0530
+++ b/day1/session3.tex	Mon Mar 08 20:45:33 2010 +0530
@@ -73,7 +73,7 @@
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Title page
-\title[Statistics]{Python for Science and Engg: Statistics}
+\title[Statistics]{Python for Scienc and Engg: Statistics}
 
 \author[FOSSEE] {FOSSEE}
 
@@ -152,15 +152,8 @@
   \end{lstlisting}
 \end{frame}
 
-\begin{frame}
-  \frametitle{Computing mean ``g''}
-  \begin{block}{Exercise}
-    Obtain the mean of ``g''
-  \end{block}
-\end{frame}
-
 \begin{frame}[fragile]
-  \frametitle{Mean ``g''}
+  \frametitle{Mean ``g'' - Classical method}
   \begin{lstlisting}
 In []: total = 0
 In []: for g in g_list:
@@ -173,7 +166,7 @@
 \end{frame}
 
 \begin{frame}[fragile]
-  \frametitle{Mean ``g''}
+  \frametitle{Mean ``g'' - Slightly improved method}
   \begin{lstlisting}
 In []: g_mean = sum(g_list) / len(g_list)
 In []: print 'Mean: ', g_mean
@@ -181,7 +174,7 @@
 \end{frame}
 
 \begin{frame}[fragile]
-  \frametitle{Mean ``g''}
+  \frametitle{Mean ``g'' - One liner}
   \begin{lstlisting}
 In []: g_mean = mean(g_list)
 In []: print 'Mean: ', g_mean
@@ -215,7 +208,7 @@
     \item Region Code
     \item Roll Number
     \item Name
-    \item Marks of 5 subjects: English, Hindi, Maths, Science, Social
+    \item Marks of 5 subjects: SLang, Flang Maths, Science, Social
     \item Total marks
     \item Pass/Fail (P/F)
     \item Withheld (W)
@@ -257,30 +250,33 @@
 \subsection{Data processing}
 \begin{frame}[fragile]
   \frametitle{File reading and parsing \ldots}
+\emphbar{Reading files line by line is the same as we had done with the pendulum example.}
+
   \begin{lstlisting}
 for record in open('sslc1.txt'):
     fields = record.split(';')
   \end{lstlisting}
-\begin{block}{}
-\centerline{Recall pendulum example!}
-\end{block}
 \end{frame}
 
 \subsection{Dictionaries}
 \begin{frame}[fragile]
   \frametitle{Dictionaries: Introduction}
   \begin{itemize}
-    \item lists index: 0 \ldots n
-    \item dictionaries index using strings
+    \item Lists index using integers\\
+Recall \typ{p = [2, 3, 5, 7]} and\\
+\typ{p[1]} is equal to \typ{3}
+    \item Dictionaries index using strings
   \end{itemize}
 \end{frame}
 
 \begin{frame}[fragile]
   \frametitle{Dictionaries \ldots}
   \begin{lstlisting}
-In []: d = {'jpg' : 'image file',
+In []: d = {'png' : 'image file',
       'txt' : 'text file', 
-      'py' : 'python code'}
+      'py' : 'python code'
+      'java': 'bad code', 
+      'cpp': 'complex code'}
 
 In []: d['txt']
 Out[]: 'text file'
@@ -293,7 +289,7 @@
 In []: 'py' in d
 Out[]: True
 
-In []: 'cpp' in d
+In []: 'jpg' in d
 Out[]: False
   \end{lstlisting}
 \end{frame}
@@ -366,6 +362,14 @@
 
 \subsection{Visualizing data}
 \begin{frame}[fragile]
+  \frametitle{Pie Chart}
+  \begin{lstlisting}
+    pie(science.values())
+  \end{lstlisting}
+\includegraphics[height=2in, interpolate=true]{data/science_nolabel}
+\end{frame}
+
+\begin{frame}[fragile]
   \frametitle{Pie chart}
   \small
   \begin{lstlisting}
@@ -408,13 +412,6 @@
 \subsection{Obtaining statistics}
 \begin{frame}[fragile]
   \frametitle{Obtaining statistics}
-  \begin{block}{Exercise}
-    Obtain the mean of Math scores
-  \end{block}
-\end{frame}
-
-\begin{frame}[fragile]
-  \frametitle{Obtaining statistics}
   \begin{lstlisting}
 print 'Mean: ', mean(math_scores)
 
--- a/day1/session4.tex	Fri Mar 05 23:59:12 2010 +0530
+++ b/day1/session4.tex	Mon Mar 08 20:45:33 2010 +0530
@@ -164,7 +164,7 @@
 array([[ 1.,  0.],
        [ 0.,  1.]])
   \end{lstlisting}
-Also available \alert{\typ{zeros, zeros_like, empty, empty_like}}
+Also available \alert{\typ{zeros, zeros_like}}
 \end{small}
 \end{frame}
 
@@ -182,8 +182,6 @@
 Out[]: 23
 In []: c[1,2]
 Out[]: 23
-In []: c[1]
-Out[]: array([21, 22, 23])
   \end{lstlisting}
 \end{frame}
 
@@ -191,6 +189,9 @@
   \frametitle{Changing elements}
   \begin{small}
   \begin{lstlisting}
+In []: c[1]
+Out[]: array([21, 22, 23])
+
 In []: c[1,1] = -22
 In []: c
 Out[]: 
@@ -206,7 +207,7 @@
        [31, 32, 33]])
   \end{lstlisting}
   \end{small}
-How to change one \alert{column}?
+How to access one \alert{column}?
 \end{frame}
 
 \begin{frame}[fragile]
@@ -294,23 +295,28 @@
 \end{frame}
 
 \begin{frame}[fragile]
-  \frametitle{Slicing \& Striding Exercises}
+  \frametitle{Elementary image processing}
 \begin{small}
   \begin{lstlisting}
 In []: a = imread('lena.png')
 
 In []: imshow(a)
 Out[]: <matplotlib.image.AxesImage object at 0xa0384cc>
+  \end{lstlisting}
+  \end{small}
+\typ{imread} returns an array of shape (512, 512, 4) which represents an image of 512x512 pixels and 4 shades.\\
+\typ{imshow} renders the array as an image.
+\end{frame}
 
-  \end{lstlisting}
-\end{small}
+\begin{frame}[fragile]
+\frametitle{Slicing \& Striding Exercises}
   \begin{itemize}
   \item Crop the image to get the top-left quarter
   \item Crop the image to get only the face
   \item Resize image to half by dropping alternate pixels
   \end{itemize}
+
 \end{frame}
-
 \begin{frame}[fragile]
   \frametitle{Solutions}
 \begin{small}
@@ -345,14 +351,6 @@
 \end{frame}
 
 \begin{frame}[fragile]
-  \frametitle{Sum of all elements}
-  \begin{lstlisting}
-In []: sum(a)
-Out[]: 12
-  \end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
   \frametitle{Matrix Addition}
   \begin{lstlisting}
 In []: b = array([[3,2,-1,5],
@@ -410,11 +408,16 @@
 \end{frame}
 
 \begin{frame}[fragile]
-\frametitle{Determinant}
+\frametitle{Determinant and sum of all elements}
 \begin{lstlisting}
 In []: det(a)
 Out[]: 80.0
 \end{lstlisting}
+  \begin{lstlisting}
+In []: sum(a)
+Out[]: 12
+  \end{lstlisting}
+
 \end{frame}
 
 %%use S=array(X,Y)
@@ -467,7 +470,8 @@
 \section{Least Squares Fit}
 \begin{frame}[fragile]
 \frametitle{$L$ vs. $T^2$ - Scatter}
-\vspace{-0.15in}
+Linear trend visible.
+\vspace{-0.1in}
 \begin{figure}
 \includegraphics[width=4in]{data/L-Tsq-points}
 \end{figure}
@@ -475,37 +479,24 @@
 
 \begin{frame}[fragile]
 \frametitle{$L$ vs. $T^2$ - Line}
-\vspace{-0.15in}
+This line does not make any mathematical sense.
+\vspace{-0.1in}
 \begin{figure}
 \includegraphics[width=4in]{data/L-Tsq-Line}
 \end{figure}
 \end{frame}
 
 \begin{frame}[fragile]
-\frametitle{$L$ vs. $T^2$ }
 \frametitle{$L$ vs. $T^2$ - Least Square Fit}
-\vspace{-0.15in}
+This is what our intention is.
+\vspace{-0.1in}
 \begin{figure}
 \includegraphics[width=4in]{data/least-sq-fit}
 \end{figure}
 \end{frame}
 
-\begin{frame}
-\frametitle{Least Square Fit Curve}
-\begin{center}
-\begin{itemize}
-\item $L \alpha T^2$
-\item Best Fit Curve $\rightarrow$ Linear
-  \begin{itemize}
-  \item Least Square Fit
-  \end{itemize}
-\item \typ{lstsq()} 
-\end{itemize}
-\end{center}
-\end{frame}
-
 \begin{frame}[fragile]
-\frametitle{\typ{lstsq}}
+\frametitle{Matrix Formulation}
 \begin{itemize}
 \item We need to fit a line through points for the equation $T^2 = m \cdot L+c$
 \item In matrix form, the equation can be represented as $T_{sq} = A \cdot p$, where $T_{sq}$ is
@@ -535,11 +526,11 @@
 \frametitle{Getting $L$ and $T^2$}
 %If you \alert{closed} IPython after session 2
 \begin{lstlisting}
-In []: l = []
+In []: L = []
 In []: t = []
 In []: for line in open('pendulum.txt'):
   ....     point = line.split()
-  ....     l.append(float(point[0]))
+  ....     L.append(float(point[0]))
   ....     t.append(float(point[1]))
   ....
   ....
@@ -549,7 +540,7 @@
 \begin{frame}[fragile]
 \frametitle{Getting $L$ and $T^2$ \dots}
 \begin{lstlisting}
-In []: l = array(l)
+In []: L = array(L)
 In []: t = array(t)
 \end{lstlisting}
 \alert{\typ{In []: tsq = t*t}}
@@ -558,7 +549,7 @@
 \begin{frame}[fragile]
 \frametitle{Generating $A$}
 \begin{lstlisting}
-In []: A = array([l, ones_like(l)])
+In []: A = array([L, ones_like(L)])
 In []: A = A.T
 \end{lstlisting}
 %% \begin{itemize}
@@ -586,13 +577,15 @@
 \frametitle{Least Square Fit Line \ldots}
 We get the points of the line from \typ{coef}
 \begin{lstlisting}
-In []: Tline = coef[0]*l + coef[1]
+In []: Tline = coef[0]*L + coef[1]
+
+In []: Tline.shape
 \end{lstlisting}
 \begin{itemize}
-\item Now plot \typ{Tline} vs. \typ{l}, to get the Least squares fit line. 
+\item Now plot \typ{Tline} vs. \typ{L}, to get the Least squares fit line. 
 \end{itemize}
 \begin{lstlisting}
-In []: plot(l, Tline)
+In []: plot(L, Tline)
 \end{lstlisting}
 \end{frame}
 
--- a/day1/session5.tex	Fri Mar 05 23:59:12 2010 +0530
+++ b/day1/session5.tex	Mon Mar 08 20:45:33 2010 +0530
@@ -151,14 +151,17 @@
   \begin{columns}
     \column{0.5\textwidth}
     \hspace*{-0.5in}
-    \includegraphics[height=2in, interpolate=true]{data/points}
+    \includegraphics[height=2in, interpolate=true]{data/triangle}
     \column{0.45\textwidth}
     \begin{block}{Line between two points}
     \tiny
     \begin{lstlisting}
-In []: x = [1, 5]
-In []: y = [1, 4]
+In []: x = [3, 1]
+In []: y = [2, -3]
+In []: z = [-2, 4]
 In []: plot(x, y)
+In []: plot(y, z)
+In []: plot(x, z)
     \end{lstlisting}
     \end{block}
   \end{columns}
--- a/day1/session6.tex	Fri Mar 05 23:59:12 2010 +0530
+++ b/day1/session6.tex	Mon Mar 08 20:45:33 2010 +0530
@@ -311,6 +311,25 @@
 \end{center}
 \end{frame}
 
+\begin{frame}[fragile]
+  \frametitle{Exercise Problem}
+  Find the root of the equation $x^2 - sin(x) + cos^2(x)$ nearest to $0$
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Solution}
+  \begin{small}
+  \begin{lstlisting}
+    def f(x):
+        return x**2 - sin(x) + cos(x)*cos(x)
+    fsolve(f, 0)
+  \end{lstlisting}
+  \end{small}
+  \begin{center}
+\includegraphics[height=2in, interpolate=true]{data/fsolve_tanx}
+  \end{center}
+\end{frame}
+
 %% \begin{frame}[fragile]
 %% \frametitle{Scipy Methods \dots}
 %% \begin{small}