Python Scripting for Computational Science (Texts in Computational Science and Engineering)
September 1, 2010 by admin
Filed under Mathematical Physics
Python Scripting for Computational Science (Texts in Computational Science and Engineering)
The goal of this book is to teach computational scientists how to develop tailored, flexible, and human-efficient working environments built from small programs (scripts) written in the easy-to-learn, high-level language Python. The focus is on examples and applications of relevance to computational scientists: gluing existing applications and tools, e.g. for automating simulation, data analysis, and visualization; steering simulations and computational experiments; equipping old programs with g
Rating:
(out of 10 reviews)
List Price: $ 69.95
Price: $ 45.00
Find More Products


Review by C. Dunn for Python Scripting for Computational Science (Texts in Computational Science and Engineering)
Rating:
The author has 2 main goals:
1) To improve the productivity of scientists familiar with specific software systems (especially Matlab, Maple, and Mathematica) by teaching them to “glue” applications together.
2) To advocate Python as the preferred “glue” language. In his own words, “I hope to convince computational scientists having experience with Perl that Python is a preferable alternative, especially for large long-term projects.”
He has certainly done a creditable job. As an expert in computational differential equations, he neglects neither efficiency nor correctness, while stressing both simplicity and reliability. In this sense, he has done a great service to the Python community.
The question is: What justifies the purchase of his book?
The answer is: Chapters 4, 9, and 10.
Contents:
1. Introduction–26pp
Very convincing arguments.
2. Getting Started With Python Scripting–38pp
Interesting examples.
3. Basic Python–56pp
A too-quick tutorial. Go to python dot org instead.
4. Numerical Computing in Python–48pp
Stellar explanations of vectorized array operations.
5. Combining Python with Fortran, C, and C++–36pp
Details use of Fortran2Py and SWIG. Mentions many alternatives.
6. Introduction to GUI Programming–70pp
Useful examples of Tkinter/pmw widgets.
7. Web Interfaces and CGI Programming–24pp
Good source of ideas.
8. Advanced Python–132pp
Deep and extensive. Includes: option parsing, regular expressions, data persistence and compression, object-oriented programming, exceptions, generic programming, efficiency.
9. Fortran Programming with NumPy Arrays–32pp
All about efficiency and re-use.
10. C and C++ Programming with NumPy Arrays–40pp
More about efficiency. NumPy C API, C++ objects, and SCXX.
11. More Advanced GUI Programming–73pp
Tedious discussion of both Web and standalone GUIs. BLT, canvas, cgi.
12. Tools and Examples–70pp
Excellent examples of PDE solvers, with a powerful GUI, but quite long and tedious.
A. Setting up the Required Software Environment–16pp
Wonderfully specific installation instructions!
B. Elements of Software Engineering–50pp
Python’s strength! Very practical advice on modularity, documentation, coding style, regression-testing, version-control.
Strengths:
+ Downloadable py4cs package, esp. numpytools module
+ Great advice everywhere, e.g. CGI checklist, Pythonic programming, and trouble-shooting.
+ Concrete evidence for most assertions.
+ Very attractive presentation. Sturdy, high-quality cover, binding and pages. Brief, elegant code fragments (except in Chapter 12). Readable prose. No wasted space.
+ Available as 5MB pdf file, after purchase of hardcopy. Very nice.
+ Slides, installation instructions, and errata also at web site. Very professional.
My peeves:
- Not enough tables to be a useful manual.
- On p.428(#7) he points out that handling a raised exception is very slow. However, when I time his example with a positive argument, the try-except version is 20% faster (b/c the if clause is skipped), so he is actually giving bad advice for the general case. Luckily, he contradicts himself later, on page 685: “Exceptions should be used instead of if-else tests.” The best advice: Avoid common exceptions in inner loops.
- The 10-page index is not as great as it at first seems. (See Martelli’s Python in a Nutshell for a better one.)
- Pure interface functions should ‘raise NotImplementedError’, rather than ‘return’.
- Exceptions should never be trapped mindlessly with ‘except:’. That would hide your own SyntaxErrors!
- Too many exercises. (It’s published as a textbook.) Since there are no answers, the exercises are useless for non-students. (See Lutz’s Learning Python for effective exercises with answers.)
Overall rating:
This contains the best information on numerical programming in Python that I’ve seen. Though expensive, it could easily be your only Python book, given the excellent online documenation already available.
Review by RF RDC for Python Scripting for Computational Science (Texts in Computational Science and Engineering)
Rating:
I have both the 2nd and 3rd edition of the book. The book does have ‘unexciting academic LaTeX format’ which another reviewer pointed out, as is also true that one should ‘NOT expect a cookbook of high performance algorithm implementations’. Rather, I would say that this is the type of book that algorithm-intense cookbooks could be made from.
The book has a lot to offer someone prepared to slosh through and dig in deep to the guts of the book. In this sense I found the book to lack a sense of conceptual significance, in that much of the mundane material of everyday programming receives the same level of detail that the more complex subjects do. So, it is often that I find myself skimming the trivial to find the core. Unfortunately, some of the core code elements and examples are compiled from a litany of trivialities and then it is necessary to go back and pick up the bits and pieces to make sense of where you are focusing on.
More often than not, the maze of obfuscation does lead to an interesting ‘ah ha’ and that makes the book worthwhile to me. I think the update from 2nd to 3rd editions is warranted, but should also have included a proper parsing of the chaff and a little creativity in layout would go a long way to making this book true reading material and a ready-by-your-side reference.
As it stands, I need to get in the right frame of mind to approach the book on even a casual encounter. But when I do, I am pleased with what I can take away from it and readily apply. The Tools and Examples section, which has high applicability to testing code, is very worthwhile but, again, is a little shaded as in viewing the forest from the trees.
Review by Stanely S. Forrester for Python Scripting for Computational Science (Texts in Computational Science and Engineering)
Rating:
Python Scripting for Computational Science is both an introduction to the Python language and an excellent reference for the intermediate developer. The approach taken by the author is to present the language in the form of tasks to be solved accompanied by example code. As expected for a book on scientific computing the modules covered in the examples emphasize numerical packages but this in no way detracts from the applicability to general Python enthusiast.
What really makes this book more than just another Python introduction is that the author bridges the gap between complied and interpreted code. He demonstrates how the speed of execution of compiled code can be tied to the rapid pace at which scripts can be developed. Examples are provided for interfacing C, C++ and FORTRAN code with Python. Calls to precompiled applications are also covered and the examples were easily adapted to my favorite computational tools. One of the risks with doing numerical work in a scripting language is the possibility of straying into computationally intensive tasks to which interpreted code is not well suited . Latter chapters discuss how to identify these portions of your code and how to migrating these tasks to a compiled language.
Review by Braddock Gaskill for Python Scripting for Computational Science (Texts in Computational Science and Engineering)
Rating:
I bought this book as an experienced programmer and Unix user expecting more of a “Numerical Recepies in Python” emphasis on the efficient implementation of algorithms which happen to be in Python. I should have paid more attention to the description.
This book is really more of a “Grad Student’s Guide to Everyday Python Usage”. I imagine it would be very valuable to a mathematics Grad student without too much programming or shell experience, looking for an alternative to Matlab. However, there is very little “Computational Science” in this book. Do NOT expect a cookbook of high performance algorithm implementations.
The book is a very verbose 700+ pages, all in an unexciting academic LaTeX format. The author works through idiom after idiom for accomplishing different tasks in fairly stand-alone sub-sections without much of a feeling of conceptual “flow” between them. It sort of feels like reading through the author’s personal lab notes that he took everytime he learned a new language feature or trick.
If you are an experienced programmer, you will quickly get impatient with the verbose presentation that emphasizes idioms and examples instead of fundamental concepts and syntax reference tables. But, if you are an experienced programmer, you are not the target audience for this book.
Braddock Gaskill
Review by W Boudville for Python Scripting for Computational Science (Texts in Computational Science and Engineering)
Rating:
Langtangen’s emphasis here is on a reader who comes from a strong background in engineering or science, and is familiar with common computational ideas and has done some programming, but not necessarily in Python. The typical book on Python is aimed at a general programming reader, and the examples in such a book usually are quite elementary, from a computational viewpoint.
The merit of Langtangen’s book is that he gets into a lot of computational ideas. This is not a trivial book. Aspects like parsing data in files, connecting to local and remote hosts, and interacting with programs written in other languages are covered. For the latter, the important cases of Fortran and C programs are explained. The choices of these languages is deliberate. In science and engineering, they are the dominant languages for raw computation. And you are likely to have legacy code written in these, that you cannot abandon while using Python.