Revision: 6258
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6258&view=rev
Author:   fer_perez
Date:     2008-10-19 03:51:56 +0000 (Sun, 19 Oct 2008)

Log Message:
-----------
Major updates to workbook.

- Made the basemap figures smaller (they were too big and made the
compilation really slow).

- Changed the ratner figure from png to jpb (saved 90% in size)

- Removed all lyx files, we're now using pure latex.

- Added scripts for various useful tasks.

Modified Paths:
--------------
    trunk/py4science/workbook/Makefile
    trunk/py4science/workbook/basemap.tex
    trunk/py4science/workbook/fig/basemap1.png
    trunk/py4science/workbook/fig/basemap2.png
    trunk/py4science/workbook/fig/basemap3.png
    trunk/py4science/workbook/fig/basemap4.png
    trunk/py4science/workbook/fig/basemap5.png
    trunk/py4science/workbook/main.tex
    trunk/py4science/workbook/wordfreqs.tex

Added Paths:
-----------
    trunk/py4science/workbook/problems_soln/
    trunk/py4science/workbook/problems_soln/basemap1.py
    trunk/py4science/workbook/problems_soln/basemap2.py
    trunk/py4science/workbook/problems_soln/basemap3.py
    trunk/py4science/workbook/problems_soln/basemap4.py
    trunk/py4science/workbook/problems_soln/basemap5.py
    trunk/py4science/workbook/problems_soln/bessel.py
    trunk/py4science/workbook/problems_soln/convolution_demo.py
    trunk/py4science/workbook/problems_soln/fft_imdenoise.py
    trunk/py4science/workbook/problems_soln/glass_dots1.py
    trunk/py4science/workbook/problems_soln/lotka_volterra.py
    trunk/py4science/workbook/problems_soln/noisy_sine.py
    trunk/py4science/workbook/problems_soln/qsort.py
    trunk/py4science/workbook/problems_soln/quad_newton.py
    trunk/py4science/workbook/problems_soln/stats_descriptives.py
    trunk/py4science/workbook/problems_soln/stats_distributions.py
    trunk/py4science/workbook/problems_soln/stock_records.py
    trunk/py4science/workbook/problems_soln/trapezoid.py
    trunk/py4science/workbook/problems_soln/wallis_pi.py
    trunk/py4science/workbook/problems_soln/wordfreqs.py
    trunk/py4science/workbook/update_problems.py

Removed Paths:
-------------
    trunk/py4science/workbook/intro.lyx
    trunk/py4science/workbook/main.lyx
    trunk/py4science/workbook/qsort.lyx
    trunk/py4science/workbook/quad_newton.lyx
    trunk/py4science/workbook/trapezoid.lyx
    trunk/py4science/workbook/wallis_pi.lyx
    trunk/py4science/workbook/wordfreqs.lyx

Modified: trunk/py4science/workbook/Makefile
===================================================================
--- trunk/py4science/workbook/Makefile  2008-10-19 03:49:27 UTC (rev 6257)
+++ trunk/py4science/workbook/Makefile  2008-10-19 03:51:56 UTC (rev 6258)
@@ -9,25 +9,27 @@
 SKEL_SRC = workbook_skeletons.aux workbook_skeletons.bbl \
 workbook_skeletons.tex $(TEXFILES)
 
-SOL_SRC = $(subst _skeletons,_solved,$(SKEL_SRC))
+SOLN_SRC = $(subst _skeletons,_solutions,$(SKEL_SRC))
 
 # programs
 PDFTEX = pdflatex -file-line-error
 FASTPDFTEX = pdflatex -file-line-error -draftmode -halt-on-error
 
 # convenience shorthand for targets
-sol: workbook_solved.pdf
+sol: workbook_solutions.pdf
 skel: workbook_skeletons.pdf
-all: sol skel
+all: soln skel
 
 # actual targets
-workbook_solved.pdf: $(SOL_SRC)
+workbook_solutions.pdf: $(SOLN_SRC)
+       ./update_problems.py
        rm -f problems
-       ln -sf problems_solved problems
-       $(PDFTEX) workbook_solved
-       $(PDFTEX) workbook_solved
+       ln -sf problems_soln problems
+       $(PDFTEX) workbook_solutions
+       $(PDFTEX) workbook_solutions
 
 workbook_skeletons.pdf: $(SKEL_SRC)
+       ./update_problems.py
        rm -f problems
        ln -sf problems_skel problems
        $(PDFTEX) workbook_skeletons
@@ -35,14 +37,14 @@
 workbook_skeletons.tex:
        ln -sf main.tex workbook_skeletons.tex
 
-workbook_solved.tex:
-       ln -sf main.tex workbook_solved.tex
+workbook_solutions.tex:
+       ln -sf main.tex workbook_solutions.tex
 
 clean:
-       rm -f *~ *.aux *.log *.toc *.out *.bbl *.blg
+       rm -f *~ *.aux *.log *.toc *.out *.bbl *.blg *.fmt
 
 distclean: clean
-       rm -f workbook_solved.pdf workbook_skeletons.pdf
+       rm -f workbook_solutions.pdf workbook_skeletons.pdf
 
 # Basic rules
 empty :=

Modified: trunk/py4science/workbook/basemap.tex
===================================================================
--- trunk/py4science/workbook/basemap.tex       2008-10-19 03:49:27 UTC (rev 
6257)
+++ trunk/py4science/workbook/basemap.tex       2008-10-19 03:51:56 UTC (rev 
6258)
@@ -33,7 +33,7 @@
 to Figure 1.
 
 \begin{figure}[h]
-\includegraphics[scale=0.75]{fig/basemap1}
+\includegraphics[width=4in]{fig/basemap1}
 
 \caption{A map created by specifying the latitudes and longitudes of the four
 corners.}
@@ -64,7 +64,7 @@
 This should produce something similar to Figure 2.
 
 \begin{figure}[h]
-\includegraphics[scale=0.75]{fig/basemap3}
+\includegraphics[width=4in]{fig/basemap3}
 
 \caption{Drawing the locations of two cities, and connecting them along a great
 circle.}
@@ -84,7 +84,7 @@
 Running this script should produce a plot that looks like Figure 3.
 
 \begin{figure}[h]
-\includegraphics[scale=0.75]{fig/basemap4}
+\includegraphics[width=4in]{fig/basemap4}
 
 \caption{Drawing labelled meridians and parallels on the map (a graticule 
grid).}
 
@@ -114,7 +114,7 @@
 The resulting plot should look like Figure 4.
 
 \begin{figure}[h]
-\includegraphics[scale=0.75]{fig/basemap5}
+\includegraphics[width=4in]{fig/basemap5}
 
 \caption{Sea surface temperature on a global mollweide projection.}
 

Modified: trunk/py4science/workbook/fig/basemap1.png
===================================================================
(Binary files differ)

Modified: trunk/py4science/workbook/fig/basemap2.png
===================================================================
(Binary files differ)

Modified: trunk/py4science/workbook/fig/basemap3.png
===================================================================
(Binary files differ)

Modified: trunk/py4science/workbook/fig/basemap4.png
===================================================================
(Binary files differ)

Modified: trunk/py4science/workbook/fig/basemap5.png
===================================================================
(Binary files differ)

Deleted: trunk/py4science/workbook/intro.lyx
===================================================================
--- trunk/py4science/workbook/intro.lyx 2008-10-19 03:49:27 UTC (rev 6257)
+++ trunk/py4science/workbook/intro.lyx 2008-10-19 03:51:56 UTC (rev 6258)
@@ -1,158 +0,0 @@
-#LyX 1.4.3 created this file. For more info see http://www.lyx.org/
-\lyxformat 245
-\begin_document
-\begin_header
-\textclass amsbook
-\begin_preamble
-\input{preamble.tex}
-\end_preamble
-\language english
-\inputencoding auto
-\fontscheme default
-\graphics default
-\paperfontsize default
-\spacing single
-\papersize default
-\use_geometry true
-\use_amsmath 1
-\cite_engine basic
-\use_bibtopic false
-\paperorientation portrait
-\leftmargin 1.3in
-\topmargin 1in
-\rightmargin 1.3in
-\bottommargin 1in
-\secnumdepth 3
-\tocdepth 3
-\paragraph_separation indent
-\defskip medskip
-\quotes_language english
-\papercolumns 1
-\papersides 2
-\paperpagestyle default
-\tracking_changes false
-\output_changes false
-\end_header
-
-\begin_body
-
-\begin_layout Standard
-This document contains a set of small problems, drawn from many different
- fields, meant to illustrate commonly useful techniques for using Python
- in scientific computing.
-\end_layout
-
-\begin_layout Standard
-All problems are presented in a similar fashion: the task is explained 
including
- any necessary mathematical background and a `code skeleton' is provided
- that is meant to serve as a starting point for the solution of the exercise.
- In some cases, some example output of the expected solution, figures or
- additional hints may be provided as well.
- 
-\end_layout
-
-\begin_layout Standard
-The accompanying source download for this workbook contains the complete
- solutions, which are not part of this document for the sake of brevity.
-\end_layout
-
-\begin_layout Standard
-For several examples, the provided skeleton contains pre-written tests which
- validate the correctness of the expected answers.
- When you have completed the exercise successfully, you should be able to
- run it from within IPython and see something like this (illustrated using
- a trapezoidal rule problem, whose solution is in the file 
-\family typewriter
-trapezoid.py
-\family default
-):
-\end_layout
-
-\begin_layout Standard
-\begin_inset ERT
-status open
-
-\begin_layout Standard
-
-
-\backslash
-begin{lstlisting}
-\end_layout
-
-\begin_layout Standard
-
-In [7]: run trapezoid.py
-\end_layout
-
-\begin_layout Standard
-
-....
-\end_layout
-
-\begin_layout Standard
-
-----------------------------------------------------------------------
-\end_layout
-
-\begin_layout Standard
-
-Ran 4 tests in 0.003s
-\end_layout
-
-\begin_layout Standard
-
-\end_layout
-
-\begin_layout Standard
-
-OK
-\end_layout
-
-\begin_layout Standard
-
-
-\backslash
-end{lstlisting}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-This message tells you that 4 automatic tests were successfully executed.
- The idea of including automatic tests in your code is a common one in modern
- software development, and Python includes in its standard library two modules
- for automatic testing, with slightly different functionality: 
-\family typewriter
-unittest
-\family default
- and 
-\family typewriter
-doctest
-\family default
-.
- These tests were written using the 
-\family typewriter
-unittest
-\family default
- system, whose complete documentation can be found here: 
-\begin_inset LatexCommand 
\htmlurl{http://docs.python.org/lib/module-unittest.html}
-
-\end_inset
-
-.
- 
-\end_layout
-
-\begin_layout Standard
-Other exercises will illustrate the use of the 
-\family typewriter
-doctest
-\family default
- system, since it provides complementary functionality.
-\end_layout
-
-\end_body
-\end_document

Deleted: trunk/py4science/workbook/main.lyx
===================================================================
--- trunk/py4science/workbook/main.lyx  2008-10-19 03:49:27 UTC (rev 6257)
+++ trunk/py4science/workbook/main.lyx  2008-10-19 03:51:56 UTC (rev 6258)
@@ -1,166 +0,0 @@
-#LyX 1.4.3 created this file. For more info see http://www.lyx.org/
-\lyxformat 245
-\begin_document
-\begin_header
-\textclass amsbook
-\begin_preamble
-\input{preamble.tex}
-\end_preamble
-\language english
-\inputencoding auto
-\fontscheme default
-\graphics default
-\paperfontsize default
-\spacing single
-\papersize letterpaper
-\use_geometry true
-\use_amsmath 2
-\cite_engine basic
-\use_bibtopic false
-\paperorientation portrait
-\leftmargin 1.3in
-\topmargin 1in
-\rightmargin 1.3in
-\bottommargin 1in
-\secnumdepth 3
-\tocdepth 3
-\paragraph_separation indent
-\defskip medskip
-\quotes_language english
-\papercolumns 1
-\papersides 2
-\paperpagestyle headings
-\tracking_changes false
-\output_changes true
-\end_header
-
-\begin_body
-
-\begin_layout Title
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
- 
-\backslash
-vspace{3cm} 
-\end_layout
-
-\end_inset
-
-Practical Scientific Computing
-\newline
-in Python
-\newline
-A Workbook
-\end_layout
-
-\begin_layout Author
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
- 
-\backslash
-vspace{1cm} 
-\end_layout
-
-\end_inset
-
-John D.
- Hunter
-\newline
-Fernando P\xE9rez
-\begin_inset ERT
-status collapsed
-
-\begin_layout Standard
-
- 
-\backslash
-vspace{1cm} 
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\begin_inset LatexCommand \tableofcontents{}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Chapter
-Introduction
-\end_layout
-
-\begin_layout Standard
-\begin_inset Include \input{intro.lyx}
-preview false
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Chapter
-Simple non-numerical problems
-\end_layout
-
-\begin_layout Standard
-\begin_inset Include \input{qsort.lyx}
-preview false
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\begin_inset Include \input{wordfreqs.lyx}
-preview false
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Chapter
-Elementary Numerics
-\end_layout
-
-\begin_layout Standard
-\begin_inset Include \input{wallis_pi.lyx}
-preview false
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\begin_inset Include \input{trapezoid.lyx}
-preview false
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\begin_inset Include \input{quad_newton.lyx}
-preview false
-
-\end_inset
-
-
-\end_layout
-
-\end_body
-\end_document

Modified: trunk/py4science/workbook/main.tex
===================================================================
--- trunk/py4science/workbook/main.tex  2008-10-19 03:49:27 UTC (rev 6257)
+++ trunk/py4science/workbook/main.tex  2008-10-19 03:51:56 UTC (rev 6258)
@@ -112,6 +112,7 @@
 \input{wallis_pi.tex}
 \input{trapezoid.tex}
 \input{quad_newton.tex}
+\input{bessel.tex}
 
 \chapter{Linear algebra}
 \input{intro_linalg.tex}

Added: trunk/py4science/workbook/problems_soln/basemap1.py
===================================================================
--- trunk/py4science/workbook/problems_soln/basemap1.py                         
(rev 0)
+++ trunk/py4science/workbook/problems_soln/basemap1.py 2008-10-19 03:51:56 UTC 
(rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/basemap1_soln.py
\ No newline at end of file


Property changes on: trunk/py4science/workbook/problems_soln/basemap1.py
___________________________________________________________________
Added: svn:special
   + *

Added: trunk/py4science/workbook/problems_soln/basemap2.py
===================================================================
--- trunk/py4science/workbook/problems_soln/basemap2.py                         
(rev 0)
+++ trunk/py4science/workbook/problems_soln/basemap2.py 2008-10-19 03:51:56 UTC 
(rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/basemap2_soln.py
\ No newline at end of file


Property changes on: trunk/py4science/workbook/problems_soln/basemap2.py
___________________________________________________________________
Added: svn:special
   + *

Added: trunk/py4science/workbook/problems_soln/basemap3.py
===================================================================
--- trunk/py4science/workbook/problems_soln/basemap3.py                         
(rev 0)
+++ trunk/py4science/workbook/problems_soln/basemap3.py 2008-10-19 03:51:56 UTC 
(rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/basemap3_soln.py
\ No newline at end of file


Property changes on: trunk/py4science/workbook/problems_soln/basemap3.py
___________________________________________________________________
Added: svn:special
   + *

Added: trunk/py4science/workbook/problems_soln/basemap4.py
===================================================================
--- trunk/py4science/workbook/problems_soln/basemap4.py                         
(rev 0)
+++ trunk/py4science/workbook/problems_soln/basemap4.py 2008-10-19 03:51:56 UTC 
(rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/basemap4_soln.py
\ No newline at end of file


Property changes on: trunk/py4science/workbook/problems_soln/basemap4.py
___________________________________________________________________
Added: svn:special
   + *

Added: trunk/py4science/workbook/problems_soln/basemap5.py
===================================================================
--- trunk/py4science/workbook/problems_soln/basemap5.py                         
(rev 0)
+++ trunk/py4science/workbook/problems_soln/basemap5.py 2008-10-19 03:51:56 UTC 
(rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/basemap5_soln.py
\ No newline at end of file


Property changes on: trunk/py4science/workbook/problems_soln/basemap5.py
___________________________________________________________________
Added: svn:special
   + *

Added: trunk/py4science/workbook/problems_soln/bessel.py
===================================================================
--- trunk/py4science/workbook/problems_soln/bessel.py                           
(rev 0)
+++ trunk/py4science/workbook/problems_soln/bessel.py   2008-10-19 03:51:56 UTC 
(rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/bessel_soln.py
\ No newline at end of file


Property changes on: trunk/py4science/workbook/problems_soln/bessel.py
___________________________________________________________________
Added: svn:special
   + *

Added: trunk/py4science/workbook/problems_soln/convolution_demo.py
===================================================================
--- trunk/py4science/workbook/problems_soln/convolution_demo.py                 
        (rev 0)
+++ trunk/py4science/workbook/problems_soln/convolution_demo.py 2008-10-19 
03:51:56 UTC (rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/convolution_demo_soln.py
\ No newline at end of file


Property changes on: trunk/py4science/workbook/problems_soln/convolution_demo.py
___________________________________________________________________
Added: svn:special
   + *

Added: trunk/py4science/workbook/problems_soln/fft_imdenoise.py
===================================================================
--- trunk/py4science/workbook/problems_soln/fft_imdenoise.py                    
        (rev 0)
+++ trunk/py4science/workbook/problems_soln/fft_imdenoise.py    2008-10-19 
03:51:56 UTC (rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/fft_imdenoise_soln.py
\ No newline at end of file


Property changes on: trunk/py4science/workbook/problems_soln/fft_imdenoise.py
___________________________________________________________________
Added: svn:special
   + *

Added: trunk/py4science/workbook/problems_soln/glass_dots1.py
===================================================================
--- trunk/py4science/workbook/problems_soln/glass_dots1.py                      
        (rev 0)
+++ trunk/py4science/workbook/problems_soln/glass_dots1.py      2008-10-19 
03:51:56 UTC (rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/glass_dots1_soln.py
\ No newline at end of file


Property changes on: trunk/py4science/workbook/problems_soln/glass_dots1.py
___________________________________________________________________
Added: svn:special
   + *

Added: trunk/py4science/workbook/problems_soln/lotka_volterra.py
===================================================================
--- trunk/py4science/workbook/problems_soln/lotka_volterra.py                   
        (rev 0)
+++ trunk/py4science/workbook/problems_soln/lotka_volterra.py   2008-10-19 
03:51:56 UTC (rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/lotka_volterra_soln.py
\ No newline at end of file


Property changes on: trunk/py4science/workbook/problems_soln/lotka_volterra.py
___________________________________________________________________
Added: svn:special
   + *

Added: trunk/py4science/workbook/problems_soln/noisy_sine.py
===================================================================
--- trunk/py4science/workbook/problems_soln/noisy_sine.py                       
        (rev 0)
+++ trunk/py4science/workbook/problems_soln/noisy_sine.py       2008-10-19 
03:51:56 UTC (rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/noisy_sine_soln.py
\ No newline at end of file


Property changes on: trunk/py4science/workbook/problems_soln/noisy_sine.py
___________________________________________________________________
Added: svn:special
   + *

Added: trunk/py4science/workbook/problems_soln/qsort.py
===================================================================
--- trunk/py4science/workbook/problems_soln/qsort.py                            
(rev 0)
+++ trunk/py4science/workbook/problems_soln/qsort.py    2008-10-19 03:51:56 UTC 
(rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/qsort_soln.py
\ No newline at end of file


Property changes on: trunk/py4science/workbook/problems_soln/qsort.py
___________________________________________________________________
Added: svn:special
   + *

Added: trunk/py4science/workbook/problems_soln/quad_newton.py
===================================================================
--- trunk/py4science/workbook/problems_soln/quad_newton.py                      
        (rev 0)
+++ trunk/py4science/workbook/problems_soln/quad_newton.py      2008-10-19 
03:51:56 UTC (rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/quad_newton_soln.py
\ No newline at end of file


Property changes on: trunk/py4science/workbook/problems_soln/quad_newton.py
___________________________________________________________________
Added: svn:special
   + *

Added: trunk/py4science/workbook/problems_soln/stats_descriptives.py
===================================================================
--- trunk/py4science/workbook/problems_soln/stats_descriptives.py               
                (rev 0)
+++ trunk/py4science/workbook/problems_soln/stats_descriptives.py       
2008-10-19 03:51:56 UTC (rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/stats_descriptives_soln.py
\ No newline at end of file


Property changes on: 
trunk/py4science/workbook/problems_soln/stats_descriptives.py
___________________________________________________________________
Added: svn:special
   + *

Added: trunk/py4science/workbook/problems_soln/stats_distributions.py
===================================================================
--- trunk/py4science/workbook/problems_soln/stats_distributions.py              
                (rev 0)
+++ trunk/py4science/workbook/problems_soln/stats_distributions.py      
2008-10-19 03:51:56 UTC (rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/stats_distributions_soln.py
\ No newline at end of file


Property changes on: 
trunk/py4science/workbook/problems_soln/stats_distributions.py
___________________________________________________________________
Added: svn:special
   + *

Added: trunk/py4science/workbook/problems_soln/stock_records.py
===================================================================
--- trunk/py4science/workbook/problems_soln/stock_records.py                    
        (rev 0)
+++ trunk/py4science/workbook/problems_soln/stock_records.py    2008-10-19 
03:51:56 UTC (rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/stock_records_soln.py
\ No newline at end of file


Property changes on: trunk/py4science/workbook/problems_soln/stock_records.py
___________________________________________________________________
Added: svn:special
   + *

Added: trunk/py4science/workbook/problems_soln/trapezoid.py
===================================================================
--- trunk/py4science/workbook/problems_soln/trapezoid.py                        
        (rev 0)
+++ trunk/py4science/workbook/problems_soln/trapezoid.py        2008-10-19 
03:51:56 UTC (rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/trapezoid_soln.py
\ No newline at end of file


Property changes on: trunk/py4science/workbook/problems_soln/trapezoid.py
___________________________________________________________________
Added: svn:special
   + *

Added: trunk/py4science/workbook/problems_soln/wallis_pi.py
===================================================================
--- trunk/py4science/workbook/problems_soln/wallis_pi.py                        
        (rev 0)
+++ trunk/py4science/workbook/problems_soln/wallis_pi.py        2008-10-19 
03:51:56 UTC (rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/wallis_pi_soln.py
\ No newline at end of file


Property changes on: trunk/py4science/workbook/problems_soln/wallis_pi.py
___________________________________________________________________
Added: svn:special
   + *

Added: trunk/py4science/workbook/problems_soln/wordfreqs.py
===================================================================
--- trunk/py4science/workbook/problems_soln/wordfreqs.py                        
        (rev 0)
+++ trunk/py4science/workbook/problems_soln/wordfreqs.py        2008-10-19 
03:51:56 UTC (rev 6258)
@@ -0,0 +1 @@
+link ../../examples/soln/wordfreqs_soln.py
\ No newline at end of file


Property changes on: trunk/py4science/workbook/problems_soln/wordfreqs.py
___________________________________________________________________
Added: svn:special
   + *

Deleted: trunk/py4science/workbook/qsort.lyx
===================================================================
--- trunk/py4science/workbook/qsort.lyx 2008-10-19 03:49:27 UTC (rev 6257)
+++ trunk/py4science/workbook/qsort.lyx 2008-10-19 03:51:56 UTC (rev 6258)
@@ -1,188 +0,0 @@
-#LyX 1.4.3 created this file. For more info see http://www.lyx.org/
-\lyxformat 245
-\begin_document
-\begin_header
-\textclass amsbook
-\begin_preamble
-\input{preamble.tex}
-\end_preamble
-\language english
-\inputencoding auto
-\fontscheme default
-\graphics default
-\paperfontsize default
-\spacing single
-\papersize default
-\use_geometry true
-\use_amsmath 1
-\cite_engine basic
-\use_bibtopic false
-\paperorientation portrait
-\leftmargin 1.3in
-\topmargin 1in
-\rightmargin 1.3in
-\bottommargin 1in
-\secnumdepth 3
-\tocdepth 3
-\paragraph_separation indent
-\defskip medskip
-\quotes_language english
-\papercolumns 1
-\papersides 2
-\paperpagestyle default
-\tracking_changes false
-\output_changes false
-\end_header
-
-\begin_body
-
-\begin_layout Section
-Sorting quickly with QuickSort 
-\end_layout
-
-\begin_layout Standard
-Quicksort is one of the best known, and probably the simplest, fast algorithm
- for sorting 
-\begin_inset Formula $n$
-\end_inset
-
- items.
- It is fast in the sense that it requires on average 
-\begin_inset Formula $\mathcal{O}(n\log n)$
-\end_inset
-
- comparisons instead of 
-\begin_inset Formula $\mathcal{O}(n^{2})$
-\end_inset
-
-, although a naive implementation does have quadratic worst-case behavior.
-\end_layout
-
-\begin_layout Standard
-The algorithm uses a simple divide and conquer strategy, and its implementation
- is naturally recursive.
- Its basic steps are:
-\end_layout
-
-\begin_layout Enumerate
-Pick an element from the list, called the pivot 
-\begin_inset Formula $p$
-\end_inset
-
- (any choice works).
-\end_layout
-
-\begin_layout Enumerate
-Select from the rest of the list those elements smaller and those greater
- than the pivot, and store them in separate lists 
-\begin_inset Formula $S$
-\end_inset
-
- and 
-\begin_inset Formula $G$
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Enumerate
-Recursively apply the algorithm
-\family typewriter
- 
-\family default
-to 
-\begin_inset Formula $S$
-\end_inset
-
- and 
-\begin_inset Formula $G$
-\end_inset
-
-.
- The final result can be written as 
-\begin_inset Formula $\sigma(S)+[p]+\sigma(G)$
-\end_inset
-
-, where 
-\begin_inset Formula $\sigma$
-\end_inset
-
- represents the sorting operation, 
-\begin_inset Formula $+$
-\end_inset
-
- indicates list concatenation and 
-\begin_inset Formula $[p]$
-\end_inset
-
- is the list containing the pivot as its single element.
-\end_layout
-
-\begin_layout Standard
-The listing\InsetSpace ~
-
-\begin_inset LatexCommand \ref{code:qsort_skel}
-
-\end_inset
-
- contains a skeleton with no implementation but with tests already written
- (in the form of 
-\emph on
-unit tests
-\emph default
-, as described in the introduction).
-\end_layout
-
-\begin_layout Standard
-\begin_inset ERT
-status open
-
-\begin_layout Standard
-
-
-\backslash
-lstinputlisting[label=code:qsort_skel,caption={IGNORED}]{skel/qsort_skel.py}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Subsection*
-Hints
-\end_layout
-
-\begin_layout Itemize
-Python has no particular syntactic requirements for implementing recursion,
- but it does have a maximum recursion depth.
- This value can be queried via the function 
-\family typewriter
-sys.getrecursionlimit()
-\family default
-, and it can be changed with 
-\family typewriter
-sys.setrecursionlimit(new_value)
-\family default
-.
- 
-\end_layout
-
-\begin_layout Itemize
-Like in all recursive problems, don't forget to implement an exit condition!
-\end_layout
-
-\begin_layout Itemize
-If 
-\family typewriter
-L
-\family default
- is a list, the call 
-\family typewriter
-len(L)
-\family default
- provides its length.
-\end_layout
-
-\end_body
-\end_document

Deleted: trunk/py4science/workbook/quad_newton.lyx
===================================================================
--- trunk/py4science/workbook/quad_newton.lyx   2008-10-19 03:49:27 UTC (rev 
6257)
+++ trunk/py4science/workbook/quad_newton.lyx   2008-10-19 03:51:56 UTC (rev 
6258)
@@ -1,151 +0,0 @@
-#LyX 1.4.3 created this file. For more info see http://www.lyx.org/
-\lyxformat 245
-\begin_document
-\begin_header
-\textclass amsbook
-\begin_preamble
-\input{preamble.tex}
-\end_preamble
-\language english
-\inputencoding auto
-\fontscheme default
-\graphics default
-\paperfontsize default
-\spacing single
-\papersize default
-\use_geometry true
-\use_amsmath 1
-\cite_engine basic
-\use_bibtopic false
-\paperorientation portrait
-\leftmargin 1.3in
-\topmargin 1in
-\rightmargin 1.3in
-\bottommargin 1in
-\secnumdepth 3
-\tocdepth 3
-\paragraph_separation indent
-\defskip medskip
-\quotes_language english
-\papercolumns 1
-\papersides 2
-\paperpagestyle default
-\tracking_changes false
-\output_changes false
-\end_header
-
-\begin_body
-
-\begin_layout Section
-Newton's method
-\end_layout
-
-\begin_layout Standard
-Consider the problem of solving for 
-\begin_inset Formula $t$
-\end_inset
-
- in
-\begin_inset Formula \begin{equation}
-\int_{o}^{t}f(s)ds=u\end{equation}
-
-\end_inset
-
- where 
-\begin_inset Formula $f(s)$
-\end_inset
-
- is a monotonically increasing function of 
-\begin_inset Formula $s$
-\end_inset
-
- and 
-\begin_inset Formula $u>0$
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Standard
-This problem can be simply solved if seen as a root finding question.
- Let
-\begin_inset Formula \begin{equation}
-g(t)=\int_{o}^{t}f(s)ds-u,\end{equation}
-
-\end_inset
-
-then we just need to find the root for 
-\begin_inset Formula $g(t),$
-\end_inset
-
- which is guaranteed to be unique given the conditions above.
- 
-\end_layout
-
-\begin_layout Standard
-The SciPy library includes an optimization package that contains a 
Newton-Raphso
-n solver called 
-\family typewriter
-scipy.optimize.newton.
-
-\family default
- This solver can optionally take a known derivative for the function whose
- roots are being sought, and in this case the derivative is simply 
-\begin_inset Formula \begin{equation}
-\frac{dg(t)}{dt}=f(t).\end{equation}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-For this exercise, implement the solution for the test function
-\begin_inset Formula \[
-f(t)=t\sin^{2}(t),\]
-
-\end_inset
-
- using 
-\begin_inset Formula \[
-u=\frac{1}{4}.\]
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-The listing\InsetSpace ~
-
-\begin_inset LatexCommand \ref{code:quad_newton_skel}
-
-\end_inset
-
- contains a skeleton that includes for comparison the correct numerical
- value.
-\end_layout
-
-\begin_layout Standard
-\begin_inset ERT
-status open
-
-\begin_layout Standard
-
-
-\backslash
-lstinputlisting[label=code:quad_newton_skel,caption={IGNORED}]{skel/quad_newton_
-skel.py}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-
-\end_layout
-
-\end_body
-\end_document

Deleted: trunk/py4science/workbook/trapezoid.lyx
===================================================================
--- trunk/py4science/workbook/trapezoid.lyx     2008-10-19 03:49:27 UTC (rev 
6257)
+++ trunk/py4science/workbook/trapezoid.lyx     2008-10-19 03:51:56 UTC (rev 
6258)
@@ -1,233 +0,0 @@
-#LyX 1.4.3 created this file. For more info see http://www.lyx.org/
-\lyxformat 245
-\begin_document
-\begin_header
-\textclass amsbook
-\begin_preamble
-\input{preamble.tex}
-\end_preamble
-\language english
-\inputencoding auto
-\fontscheme default
-\graphics default
-\paperfontsize default
-\spacing single
-\papersize default
-\use_geometry true
-\use_amsmath 1
-\cite_engine basic
-\use_bibtopic false
-\paperorientation portrait
-\leftmargin 1.3in
-\topmargin 1in
-\rightmargin 1.3in
-\bottommargin 1in
-\secnumdepth 3
-\tocdepth 3
-\paragraph_separation indent
-\defskip medskip
-\quotes_language english
-\papercolumns 1
-\papersides 2
-\paperpagestyle default
-\tracking_changes false
-\output_changes false
-\end_header
-
-\begin_body
-
-\begin_layout Section
-Trapezoidal rule
-\end_layout
-
-\begin_layout Standard
-In this exercise, you are tasked with implementing the simple trapezoid
- rule formula for numerical integration.
- If we want to compute the definite integral 
-\begin_inset Formula \begin{equation}
-\int_{a}^{b}f(x)dx\end{equation}
-
-\end_inset
-
-we can partition the integration interval 
-\begin_inset Formula $[a,b]$
-\end_inset
-
- into smaller subintervals, and approximate the area under the curve for
- each subinterval by the area of the trapezoid created by linearly 
interpolating
- between the two function values at each end of the subinterval.
- This is graphically illustrated in Figure\InsetSpace ~
-
-\begin_inset LatexCommand \ref{fig:trapezoid}
-
-\end_inset
-
-, where the blue line represents the function 
-\begin_inset Formula $f(x)$
-\end_inset
-
- and the red line represents the successive linear segments.
-\end_layout
-
-\begin_layout Standard
-The area under 
-\begin_inset Formula $f(x)$
-\end_inset
-
- (the value of the definite integral) can thus be approximated as the sum
- of the areas of all these trapezoids.
- If we denote by 
-\begin_inset Formula $x_{i}$
-\end_inset
-
- (
-\begin_inset Formula $i=0,\ldots,n,$
-\end_inset
-
- with 
-\begin_inset Formula $x_{0}=a$
-\end_inset
-
- and 
-\begin_inset Formula $x_{n}=b$
-\end_inset
-
-) the abscissas where the function is sampled, then 
-\begin_inset Formula \begin{equation}
-\int_{a}^{b}f(x)dx\approx\frac{1}{2}\sum_{i=1}^{n}\left(x_{i}-x_{i-1}\right)\left(f(x_{i})+f(x_{i+1})\right).\label{eq:trapzf}\end{equation}
-
-\end_inset
-
-The common case of using equally spaced abscissas with spacing 
-\begin_inset Formula $h=(b-a)/n$
-\end_inset
-
- reads simply 
-\begin_inset Formula \begin{equation}
-\int_{a}^{b}f(x)dx\approx\frac{h}{2}\sum_{i=1}^{n}\left(f(x_{i})+f(x_{i+1})\right).\label{eq:trapzf2}\end{equation}
-
-\end_inset
-
-One frequently receives the function values already precomputed, 
-\begin_inset Formula $y_{i}=f(x_{i}),$
-\end_inset
-
- so equation\InsetSpace ~
-(
-\begin_inset LatexCommand \ref{eq:trapzf}
-
-\end_inset
-
-) becomes 
-\begin_inset Formula \begin{equation}
-\int_{a}^{b}f(x)dx\approx\frac{1}{2}\sum_{i=1}^{n}\left(x_{i}-x_{i-1}\right)\left(y_{i}+y_{i-1}\right).\label{eq:trapz}\end{equation}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\begin_inset Float figure
-wide false
-sideways false
-status open
-
-\begin_layout Standard
-\align center
-\begin_inset Graphics
-       filename fig/Composite_trapezoidal_rule_illustration.png
-       lyxscale 10
-       width 3in
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Caption
-\begin_inset LatexCommand \label{fig:trapezoid}
-
-\end_inset
-
-Illustration of the composite trapezoidal rule with a non-uniform grid (Image
- credit: Wikipedia).
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Listing\InsetSpace ~
-
-\begin_inset LatexCommand \ref{code:trapezoid_skel}
-
-\end_inset
-
- contains a skeleton for this problem, written in the form of two incomplete
- functions and a set of automatic tests (in the form of 
-\emph on
-unit tests
-\emph default
-, as described in the introduction).
-\end_layout
-
-\begin_layout Standard
-\begin_inset ERT
-status open
-
-\begin_layout Standard
-
-
-\backslash
-lstinputlisting[label=code:trapezoid_skel,caption={IGNORED}]{skel/trapezoid_skel.
-py}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-In this exercise, you'll need to write two functions, 
-\family typewriter
-trapz
-\family default
- and 
-\family typewriter
-trapzf
-\family default
-.
- 
-\family typewriter
-trapz
-\family default
- applies the trapezoid formula to pre-computed values, implementing 
equation\InsetSpace ~
-(
-\begin_inset LatexCommand \ref{eq:trapz}
-
-\end_inset
-
-), while 
-\family typewriter
-trapzf
-\family default
- takes a function 
-\begin_inset Formula $f$
-\end_inset
-
- as input, as well as the total number of samples to evaluate, and computes
- eq.\InsetSpace ~
-(
-\begin_inset LatexCommand \ref{eq:trapzf2}
-
-\end_inset
-
-).
-\end_layout
-
-\end_body
-\end_document

Added: trunk/py4science/workbook/update_problems.py
===================================================================
--- trunk/py4science/workbook/update_problems.py                                
(rev 0)
+++ trunk/py4science/workbook/update_problems.py        2008-10-19 03:51:56 UTC 
(rev 6258)
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+"""Update the problems (skeletons and solutions) relative to their source.
+
+"""
+import os
+
+from glob import glob
+from os import system as sh
+
+from IPython.genutils import target_outdated
+
+# Constants
+SRC_DIR = '../examples'
+UPDATE = './mkskel.py'
+
+
+if __name__ == '__main__':
+    
+    problems = [f for f in os.listdir('problems') if f.endswith('.py')]
+
+    os.chdir(SRC_DIR)
+    to_update = []
+    for f in problems:
+        skel = os.path.join('skel',f.replace('.py','_skel.py'))
+        soln = os.path.join('soln',f.replace('.py','_soln.py'))
+        src = [f]
+        if target_outdated(skel,src) or target_outdated(soln,src):
+            to_update.append(f)
+
+    if to_update:
+        targets = ' '.join(to_update)
+        print 'Updating the following problems:\n',targets
+        sh('%s %s' % (UPDATE,targets))
+    else:
+        print 'All targets up to date, nothing to do.'


Property changes on: trunk/py4science/workbook/update_problems.py
___________________________________________________________________
Added: svn:executable
   + *

Deleted: trunk/py4science/workbook/wallis_pi.lyx
===================================================================
--- trunk/py4science/workbook/wallis_pi.lyx     2008-10-19 03:49:27 UTC (rev 
6257)
+++ trunk/py4science/workbook/wallis_pi.lyx     2008-10-19 03:51:56 UTC (rev 
6258)
@@ -1,137 +0,0 @@
-#LyX 1.4.3 created this file. For more info see http://www.lyx.org/
-\lyxformat 245
-\begin_document
-\begin_header
-\textclass amsbook
-\begin_preamble
-\input{preamble.tex}
-\end_preamble
-\language english
-\inputencoding auto
-\fontscheme default
-\graphics default
-\paperfontsize default
-\spacing single
-\papersize default
-\use_geometry true
-\use_amsmath 1
-\cite_engine basic
-\use_bibtopic false
-\paperorientation portrait
-\leftmargin 1.3in
-\topmargin 1in
-\rightmargin 1.3in
-\bottommargin 1in
-\secnumdepth 3
-\tocdepth 3
-\paragraph_separation indent
-\defskip medskip
-\quotes_language english
-\papercolumns 1
-\papersides 2
-\paperpagestyle default
-\tracking_changes false
-\output_changes false
-\end_header
-
-\begin_body
-
-\begin_layout Section
-Wallis' slow road to 
-\begin_inset Formula $\pi$
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Wallis' formula is an infinite product that converges (slowly) to 
-\begin_inset Formula $\pi$
-\end_inset
-
-:
-\begin_inset Formula \begin{equation}
-\pi=\prod_{i=1}^{\infty}\frac{4i^{2}}{4i^{2}-1}.\end{equation}
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-The listing\InsetSpace ~
-
-\begin_inset LatexCommand \ref{code:wallis_pi_skel}
-
-\end_inset
-
- contains a skeleton with no implementation but with some plotting commands
- already inserted, so that you can visualize the convergence rate of this
- formula as more terms are kept.
-\end_layout
-
-\begin_layout Standard
-\begin_inset ERT
-status open
-
-\begin_layout Standard
-
-
-\backslash
-lstinputlisting[label=code:wallis_pi_skel,caption={IGNORED}]{skel/wallis_pi_skel.
-py}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-After running the script successfully, you should obtain a plot similar
- to Figure\InsetSpace ~
-
-\begin_inset LatexCommand \ref{fig:wallis_pi}
-
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Standard
-\align center
-\begin_inset Float figure
-wide false
-sideways false
-status open
-
-\begin_layout Standard
-\align center
-\begin_inset Graphics
-       filename fig/wallis_pi_convergence.eps
-       width 4in
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Caption
-\begin_inset LatexCommand \label{fig:wallis_pi}
-
-\end_inset
-
-Convergence rate for Wallis' infinite product approximation to 
-\begin_inset Formula $\pi.$
-\end_inset
-
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\end_body
-\end_document

Deleted: trunk/py4science/workbook/wordfreqs.lyx
===================================================================
--- trunk/py4science/workbook/wordfreqs.lyx     2008-10-19 03:49:27 UTC (rev 
6257)
+++ trunk/py4science/workbook/wordfreqs.lyx     2008-10-19 03:51:56 UTC (rev 
6258)
@@ -1,245 +0,0 @@
-#LyX 1.4.3 created this file. For more info see http://www.lyx.org/
-\lyxformat 245
-\begin_document
-\begin_header
-\textclass amsbook
-\begin_preamble
-\input{preamble.tex}
-\end_preamble
-\language english
-\inputencoding auto
-\fontscheme default
-\graphics default
-\paperfontsize default
-\spacing single
-\papersize default
-\use_geometry true
-\use_amsmath 1
-\cite_engine basic
-\use_bibtopic false
-\paperorientation portrait
-\leftmargin 1.3in
-\topmargin 1in
-\rightmargin 1.3in
-\bottommargin 1in
-\secnumdepth 3
-\tocdepth 3
-\paragraph_separation indent
-\defskip medskip
-\quotes_language english
-\papercolumns 1
-\papersides 2
-\paperpagestyle default
-\tracking_changes false
-\output_changes false
-\end_header
-
-\begin_body
-
-\begin_layout Section
-Dictionaries for counting words
-\end_layout
-
-\begin_layout Standard
-A common task in text processing is to produce a count of word frequencies.
- While NumPy has a builtin histogram function for doing numerical histograms,
- it won't work out of the box for couting discrete items, since it is a
- binning histogram for a range of real values.
-\end_layout
-
-\begin_layout Standard
-But the Python language provides very powerful string manipulation 
capabilities,
- as well as a very flexible and efficiently implemented builtin data type,
- the 
-\emph on
-dictionary
-\emph default
-, that makes this task a very simple one.
-\end_layout
-
-\begin_layout Standard
-In this problem, you will need to count the frequencies of all the words
- contained in a compressed text file supplied as input.
- 
-\end_layout
-
-\begin_layout Standard
-The listing\InsetSpace ~
-
-\begin_inset LatexCommand \ref{code:wordfreqs_skel}
-
-\end_inset
-
- contains a skeleton for this problem, with 
-\family typewriter
-XXX
-\family default
- marking various places that are incomplete.
- 
-\end_layout
-
-\begin_layout Standard
-\begin_inset ERT
-status open
-
-\begin_layout Standard
-
-
-\backslash
-lstinputlisting[label=code:wordfreqs_skel,caption={IGNORED}]{skel/wordfreqs_skel.
-py}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Subsection*
-Hints
-\end_layout
-
-\begin_layout Itemize
-The 
-\family typewriter
-print_vk 
-\family default
-function is already provided for you as a simple way to summarize your results.
-\end_layout
-
-\begin_layout Itemize
-You will need to read the compressed file 
-\family typewriter
-HISTORY.gz
-\family default
-.
- Python has facilities to do this without having to manually uncompress
- it.
-\end_layout
-
-\begin_layout Itemize
-Consider `words' simply the result of splitting the input text into a list,
- using any form of whitespace as a separator.
- This is obviously a very na\xEFve definition of `word', but it shall suffice
- for the purposes of this exercise.
-\end_layout
-
-\begin_layout Itemize
-Python strings have a 
-\family typewriter
-.split()
-\family default
- method that allows for very flexible splitting.
- You can easily get more details on it in IPython:
-\end_layout
-
-\begin_layout Standard
-\begin_inset ERT
-status open
-
-\begin_layout Standard
-
-
-\backslash
-begin{lstlisting}
-\end_layout
-
-\begin_layout Standard
-
-In [2]: a = 'somestring'
-\end_layout
-
-\begin_layout Standard
-
-\end_layout
-
-\begin_layout Standard
-
-In [3]: a.split?
-\end_layout
-
-\begin_layout Standard
-
-Type:           builtin_function_or_method
-\end_layout
-
-\begin_layout Standard
-
-Base Class:     <type 'builtin_function_or_method'>
-\end_layout
-
-\begin_layout Standard
-
-Namespace:      Interactive
-\end_layout
-
-\begin_layout Standard
-
-Docstring:
-\end_layout
-
-\begin_layout Standard
-
-    S.split([sep [,maxsplit]]) -> list of strings
-\end_layout
-
-\begin_layout Standard
-
-\end_layout
-
-\begin_layout Standard
-
-    Return a list of the words in the string S, using sep as the
-\end_layout
-
-\begin_layout Standard
-
-    delimiter string.
-  If maxsplit is given, at most maxsplit
-\end_layout
-
-\begin_layout Standard
-
-    splits are done.
- If sep is not specified or is None, any
-\end_layout
-
-\begin_layout Standard
-
-    whitespace string is a separator.
-\end_layout
-
-\begin_layout Standard
-
-
-\backslash
-end{lstlisting}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-The complete set of methods of Python strings can be viewed by hitting the
- TAB key in IPython after typing `
-\family typewriter
-a.
-\family default
-', and each of them can be similarly queried with the `
-\family typewriter
-?
-\family default
-' operator as above.
- For more details on Python strings and their companion sequence types,
- see 
-\begin_inset LatexCommand \htmlurl{http://docs.python.org/lib/typesseq.html}
-
-\end_inset
-
-.
-\end_layout
-
-\end_body
-\end_document

Modified: trunk/py4science/workbook/wordfreqs.tex
===================================================================
--- trunk/py4science/workbook/wordfreqs.tex     2008-10-19 03:49:27 UTC (rev 
6257)
+++ trunk/py4science/workbook/wordfreqs.tex     2008-10-19 03:51:56 UTC (rev 
6258)
@@ -54,4 +54,5 @@
 the TAB key in IPython after typing `\texttt{a.}', and each of them
 can be similarly queried with the `\texttt{?}' operator as above.
 For more details on Python strings and their companion sequence types,
-see \url{http://docs.python.org/lib/typesseq.html}.
+see
+\url{http://docs.python.org/library/stdtypes.html#sequence-types-str-unicode-list-tuple-buffer-xrange}.
 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Matplotlib-checkins mailing list
Matplotlib-checkins@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to