Langtangen, Hans Petter,

Python scripting for computational science / Hans Petter Langtangen. - Berlin ; New York : Springer, 2004. - xxii, 726 p.ill.: 24 cm. - Texts in computational science and engineering, 3 .

1 Introduction
1.1 Scripting versus Traditional Programming
1.1.1 Why Scripting is Useful in Computational Science
1.1.2 Classification of Programming Languages .
1.1.3 Productive Pairs of Programming Languages
1.1.4 Gluing Existing Applications
1.1.5 Scripting Yields Shorter Code
1.1.6 Efficiencj' .
1.1.7 Type-Specification (Declaration) of Variables .
1.1.8 Flexible Function Interfaces
1.1.9 Interactive Computing.
1.1.10 Creating Code at Run Time
1.1.11 Nested Heterogeneous Data Structures
1.1.12 GUI Programming
1.1.13 Mixed Language Programming
1.1.14 When to Choose a Dynamically Typed Language
1.1.15 Why Python?
1.1.16 Script or Program?
1.2 Preparations for Working with This Book
2 Getting Started with Python Scripting
2.1 A Scientific Hello World Script
2.1.1 Executing Python Scripts
2.1.2 Dissection of the Scientific Hello World Script
2.2 Reading and Writing Data Files
2.2.1 Problem Specification
2.2.2 The Complete Code
2.2.3 Dissection
2.2.4 Working with Files in Memory
2.2.5 Efficiency Measurements
2.2.6 Exercises
2.3 Automating Simulation and Visualization
2.3.1 The Simulation Code
2.3.2 Using Gnuplot to Visualize (Jurves
2.3.3 Functionality of the Script
2.3.4 The Complete Code
2.3.5 Dissection
2.3.6 Exercises
2.4 Conducting Numerical Experiments
2.4.1 Wrapping a Loop Around Another Script
2.4.2 Generating an HTML Report
2.4.3 Making Animations
2.4.4 Varying Any Parameter
2.4.5 Exercises
2.5 File Format Conversior
2.5.1 The First Version of the Script
2.5.2 The Second Version of the Script
3 Basic Python
3.1 Introductory Topics
3.1.1 Recommended Python Documentation
3.1.2 Testing Statements in the Interactive Shell
3.1.3 Control Statements
3.1.4 Running an Application
3.1.5 File Reading and Writing
3.1.6 Output Formatting
3.2 Variables of Different Types
3.2.1 Boolean Types
3.2.2 The None Variable
3.2.3 Numbers and Numerical Expressions
3.2.4 Lists and Tuples
3.2.5 Dictionaries
3.2.6 Splitting and Joining Text
3.2.7 String Operations
3.2.8 Text Processing
3.2.9 The Basics of a Python Class
3.2.10 Determining a Variable's Type
3.2.11 Exercises
3.3 Functions
3.3.1 Keyword Arguments
3.3.2 Doc Strings
3.3.3 Variable Number of Arguments
3.3.4 Call by Reference
3.3.5 Treatment of Input and Output Arguments
3.3.6 Function Objects
3.4 Working with Files and Directories
3.4.1 Listing Files in a Directory
3.4.2 Testing File Types
3.4.3 Removing Files and Directories
3.4.4 Copying and Renaming Files
3.4.5 Splitting Pathnames
3.4.6 Creating and Moving to Directories
3.4.7 Traversing Directory Trees
3.4.8 Exercises
Numerical Computing in Python
4.1 A Quick NumPy Primer
4.1.1 Creating Arrays
4.1.2 Array Indexing
4.1.3 Array Computations
4.1.4 Type Testing
4.1.5 Hidden Temporary Arrays
4.1.6 Exercises
4.2 Vectorized Algorithms .
4.2.1 From Scalar to Array Function Arguments
4.2.2 Slicing
4.2.3 Remark on Efficiency
4.2.4 Exercises
4.3 More Advanced Array Computing
4.3.1 Random Numbers
4.3.2 Linear Algebra
4.3.3 The Gnuplot Module
4.3.4 Example: Curve Fitting
4.3.5 Arrays on Structured Grids
4.3.6 File I/O with NumPy Arrays
4.3.7 Reading and Writing Tables with NumPy Arrays
4.3.8 Functionality in the Numpytools Module
4.3.9 Exercises
4.4 Other Tools for Numerical Computations
4.4.1 The ScientificPython Package
4.4.2 The SciPy Package
4.4.3 The Python-Matlab Interface
4.4.4 Some Useful Python Modules.
Combining Python with Fortran, C, and C++
5.1 About Mixed Language Programming .
5.1.1 Applications of Mixed Language Programming
5.1.2 Calling C from Python
5.1.3 Automatic Generation of Wrapper Code
5.2 Scientific Hello World Examples
5.2.1 Combining Python and Fortran
5.2.2 Combining Python and C
5.2.3 Combining Python and C++ Functions
5.2.4 Combining Python and C++ Classes
5.2.5 Exercises
5.3 A Simple Computational Steering Example
5.3.1 Modified Time Loop for Repeated Simulations
5.3.2 Creating a Python Interface
5.3.3 The Steering Python Script
5.3.4 Equipping the Steering Script with a GUI
5.4 Scripting Interfaces to Large Libraries
Introduction to GUI Programming
6.1 Scientific Hello World GUI
6.1.1 Introductory Topics
6.1.2 The First Python/Tkinter Encounter
6.1.3 Binding Events
6.1.4 Changing the Layout
6.1.5 The Final Scientific Hello World GUI
6.1.6 An Alternative to Tkinter Variables
6.1.7 About the Pack Command
6.1.8 An Introduction to the Grid Geometry Manager
6.1.9 Implementing a GUI as a Class
6.1.10 A Simple Graphical Function Evaluator
6.1.11 Exercises
6.2 Adding GUIs to Scripts
6.2.1 A Simulation and Visualization Script with a GUI
6.2.2 Improving the Layout
6.2.3 Exercises
6.3 A List of Common Widget Operations
6.3.1 Frame
6.3.2 Label.
6.3.3 Button
6.3.4 Text Entry
6.3.5 Balloon Help
6.3.6 Option Menu
6.3.7 Slider
6.3.8 Check Button
6.3.9 Making a Simple Megawidget
6.3.10 Menu Bar
6.3.11 List Data
6.3.12 Listbox
6.3.13 Radio Button
6.3.14 Combo Box
6.3.15 Message Box
6.3.16 User-Defined Dialogs
6.3.17 Color-Picker Dialogs
6.3.18 File Selection Dialogs
6.3.19 Toplevel
6 3.20 Some Other Types of Widgets * +• o
6^3.21 Adapting Widgets to the User's Resize Actions
6.3.22 Customizing Fonts and Colors
6.3.23 Widget Overview
6.3.24 Exercises
7 Web Interfaces and CGI Progr£unniing
7.1 Introductory CGI Scripts
7.1.1 Web Forms and CGI Scripts
7.1.2 Generating Forms in CGI Scripts
7.1.3 Debugging CGI Scripts
7.1.4 A General Shell Script Wrapper for CGI Scripts
7.1.5 Security Issues
7.2 Adding Web Interfaces to Scripts
7.2.1 A Class for Form Parameters
7.2.2 Calling Other Programs
7.2.3 Running Simulations
7.2.4 Getting a CGI Script to Work
7.2.5 Using Web Applications from Scripts
7.2.6 Exercises
8 Advcinced Python
8.1 Miscellaneous Topics
8.1.1 Parsing Command-Line Arguments
8.1.2 Platform-Dependent Operations
8.1.3 Run-Time Generation of Code
8.1.4 Exercises
8.2 Regular Expressions and Text Processing
8.2.1 Motivation
8.2.2 Special Characters
8.2.3 Regular Expressions for Real Numbers
8.2.4 Using Groups to Extract Parts of a Text
8.2.5 Extracting Interval Limits
8.2.6 Extracting Multiple Matches
8.2.7 Splitting Text
8.2.8 Pattern-Matching Modifiers .
8.2.9 Substitution and Backreferences
8.2.10 Example: Swapping Arguments in Function Calls
8.2.11 A General Substitution Script
8.2.12 Debugging Regular Expressions
8.2.13 Exercises
8.3 Tools for Handling Data in Files
8.3.1 Writing and Reading Python Data Structures
8.3.2 Pickling Objects
8.3.3 Shelving Objects
8.3.4 Writing and Reading Zip Archive Files
8.3.5 Downloading Internet Files
8.3.6 Binary Input/Output
8.3.7 Exercises
8.4 A Database for NumPy Arrays
8.4.1 The Structure of the Database
8.4.2 Pickling
8.4.3 Formatted ASCII Storage
8.4.4 Shelving
8.4.5 Comparing the Various Techniques
8.5 Scripts Involving Local and Remote Hosts.
8.5.1 Secure Shell Commands
8.5.2 Distributed Simulation and Visualization
8.5.3 Client/Server Programming
8.5.4 Threads
8.6 Classes .
8.6.1 Class Programming
8.6.2 Checking the CIeiss Type
8.6.3 Private Data
8.6.4 Static Data
8.6.5 Special Attributes
8.6.6 Special Methods .
8.6.7 Multiple Inheritance
8.6.8 Using a Class as a C-like Structure
8.6.9 Attribute Access via String Names
8.6.10 Example: Turning String Formulas into Functions
8.6.11 Example: Class for Structured Grids.
8.6.12 New-Style Classes
8.6.13 Implementing Get/Set Functions via Properties
8.6.14 Subclassing Built-in Types
8.6.15 Copy and Assignment .
8.6.16 Building Class Interfaces at Run Time
8.6.17 Building Flexible Class Interfaces
8.6.18 Exercises .
8.7 Scope of Variables
8.7.1 Global, Local, and Class Variables
8.7.2 Nested Functions .
8.7.3 Dictionaries of Variables in Namespaces
8.8 Exceptions
8.8.1 Handling Exceptions
8.8.2 Raising Exceptions .
8.9 Iterators
8.9.1 Constructing an Iterator
8.9.2 A Pointwise Grid Iterator
8.9.3 A Vectorized Grid Iterator
8.9.4 Generators
8.9.5 Some Aspects of Generic Programming
8.9.6 Exercises
8.10 Investigating Efficiency
8.10.1 CPU-Time Measurements .
8.10.2 Profiling Python Scripts .
8.10.3 Optimization of Python Code
9 Fortran Programming with NumPy Arrays
9.1 Problem Definition
9.2 Filling an Array in Fortran
9.2.1 The Fortran Subroutine
9.2.2 Building and Inspecting the Extension Module
9.3 Array Storage Issues
9.3.1 Generating an Erroneous Interface
9.3.2 Array Storage in C and Fortran.
9.3.3 Input and Output Arrays as Function Arguments
9.3.4 F2PY Interface Files
9.3.5 Hiding Work Arrays .
9.4 Increasing Callback Efficiency
9.4.1 Callbacks to Vectorized Python Functions
9.4.2 Avoiding Callbacks to Python
9^4^3 Compiled Inline Callback Functions
10 C and C++ Programming with NumPy Arrays
10 1 C Programming with NumPy Arrays
10.1.1 The Basics of the NumPy C API.
10.1.2 The Handwritten Extension Code
10.1.3 Sending Arguments from Python to C .
10.1.4 Consistency Checks
10.1.5 Computing Array Values
10.1.6 Returning an Output Array
10.1.7 Convenient Macros
10.1.8 Module Initialization
10 1 9 Extension Module Template .
lOTTO Compiling, Linking, and Debugging the Module
10.1.11 Writing a Wrapper for a C Functron
10 2 C++ Programming with NumPy Arrays
10.2.1 Wrapping a NumPy Array in a C++ Object
10.2.2 Using SCXX
10 2 3 NumPy-C++ Class Conversron
10.3 Comparison of the Implementations
10.3.1 Efficiency •
10.3.2 Error Handling
11 More Advanced GUI Programming
11.1 Adding Plot Areas in GUIs
11.1.1 The BUT Graph Widget
1112 Animation of Functions in BLT Graph Widgets .
1113 Other Tools for Making GUIs with Plots
11.1.4 Exercises
11.2 Event Bindings . .
11.2.1 Binding Events to Functions with Arguments
11.2.2 A Text Widget with Tailored Keyboard Bindings
11.2.3 A Fancy List Widget
11.3 Animated Graphics with Canveis Widgets
11.3.1 The First Canvas Encounter
11.3.2 Coordinate Systems
11.3.3 The Mathematical Model Class
11.3.4 The Planet Class
11.3.5 Drawing and Moving Planets
11.3.6 Dragging Planets to New Positions
11.3.7 Using Pmw's Scrolled Canvas Widget.
11.4 Simulation and Visualization Scripts
11.4.1 Restructuring the Script
11.4.2 Representing a Parameter by a Class .
11.4.3 Improved Command-Line Script
11.4.4 Improved GUI Script
11.4.5 Improved CCI Script
11.4.6 Parameters with Physical Dimensions
11.4.7 Adding a Curve Plot Area
11.4.8 Automatic Generation of Scripts
11.4.9 Applications of the Tools
11.4.10 Allowing Physical Units in Input Files
11.4.11 Converting Input Files to GUIs .
12 Tools and Examples
12.1 Running Series of Computer Experiments
12.1.1 Multiple Values of Input Parameters
12.1.2 Implementation Details
12.1.3 Further Applications
12.2 Tools for Representing Functions
12.2.1 Functions Defined by String Formulas
12.2.2 A Unified Interface to Functions
12.2.3 Interactive Drawing of Functions
12.2.4 A Notebook for Selecting Functions
12.3 Solving Partial Differential Equations
12.3.1 Numerical Methods for ID Wave Equations
12.3.2 Implementations of ID Wave Equations
12.3.3 Classes for Solving ID Wave Equations
12.3.4 A Problem Solving Environment
12.3.5 Numerical Methods for 2D Wave Equations
12.3.6 Implementations of 2D Wave Equations
12.3.7 Exercises
Setting up the Required Software Environment
A.l Installation on Unix Systems
A. 1.1 A Suggested Directory Structure
A. 1.2 Setting Some Environment Variables
A. 1.3 Installing Tcl/Tk and Additional Modules
A. 1.4 Installing Python
A. 1.5 Installing Python Modules
A. 1.6 Installing Gnuplot
A.1.7 Installing SWIG
A. 1.8 Summary of Environment Variables
A. 1.9 Testing the Installation of Scripting Utilities
A.2 Installation on Windows Systems
Elements of Software Engineering
B.l Building and Using Modules
B.1.1 Single-File Modules
B.1.2 Multi-File Modules
B. 1.3 Debugging and Troubleshooting
B.2 Tools for Documenting Python Software
B.2.1 Doc Strings
B.2.2 Tools for Automatic Documentation
B.3 Coding Standards
B.3.1 Style Guide
B.3.2 Pythonic Programming
B.4 Verification of Scripts
B.4.1 Automating Regression Tests
B.4.2 Implementing a Tool for Regression Tests
B.4.3 Writing a Test Script
B 4.4 Verifying Output from iNumerical Computations
B.4.5 Automatic Doc String Testing
B.4.6 Unit Testing
B.5 Version Control Management
B.5.1 Getting Started with CVS
B 5 2 Building Scripts to Simplify the Use of CVS
B.6 Exercises

3540435085


Python (Computer program Language)
Science--Data Processing.

044 / LAN/P