Python Scripting for Computational Science (Texts in Computational Science and Engineering)
|
| List Price: | $74.95 |
| Price: | $41.75 & eligible for FREE Super Saver Shipping on orders over $25. Details |
Availability: Usually ships in 24 hours
Ships from and sold by Amazon.com
24 new or used available from $28.87
Average customer review:Product Description
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 graphical user interfaces; making computational Web applications; and creating interactive interfaces with a Maple/Matlab-like syntax to numerical applications in C/C++ or Fortran. In short, scripting with Python makes you much more productive, increases the reliability of your scientific work and lets you have more fun - on Unix, Windows and Macintosh. All the tools and examples in this book are open source codes. The third edition is compatible with the new NumPy implementation and features updated information, correction of errors, and improved associated software tools.
Product Details
- Amazon Sales Rank: #680994 in Books
- Published on: 2005-12-21
- Original language: English
- Number of items: 1
- Binding: Hardcover
- 736 pages
Editorial Reviews
Review
From the reviews of the second edition:
"This book addresses primarily a CSE (computational science and engineering) audience. … gives a clear and detailed account on the ways in which the surprisingly powerful Python language may aid the CSE community." (H. Muthsam, Monatshefte für Mathematik, Vol. 151 (4), 2007)
Customer Reviews
Convincing demonstration of Python's value in science
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.
Get what you pay for and more if you work into it!
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.
Absolutly Outstanding
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.






