Python scripting for computational science:
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Berlin
Springer
2008
|
Ausgabe: | 3. ed. |
Schriftenreihe: | Texts in computational science and engineering
3 |
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | XXIV, 750 S. graph. Darst. 235 mm x 155 mm |
ISBN: | 9783540739159 3540739157 |
Internformat
MARC
LEADER | 00000nam a2200000 cb4500 | ||
---|---|---|---|
001 | BV023057948 | ||
003 | DE-604 | ||
005 | 20081027 | ||
007 | t | ||
008 | 071219s2008 gw d||| |||| 00||| eng d | ||
015 | |a 07,N30,0048 |2 dnb | ||
016 | 7 | |a 984787461 |2 DE-101 | |
020 | |a 9783540739159 |c Gb. : ca. sfr 87.00 (freier Pr.) |9 978-3-540-73915-9 | ||
020 | |a 3540739157 |c Gb. : ca. sfr 87.00 (freier Pr.) |9 3-540-73915-7 | ||
024 | 3 | |a 9783540739159 | |
028 | 5 | 2 | |a 12098613 |
035 | |a (OCoLC)890619901 | ||
035 | |a (DE-599)DNB984787461 | ||
040 | |a DE-604 |b ger |e rakddb | ||
041 | 0 | |a eng | |
044 | |a gw |c XA-DE-BE | ||
049 | |a DE-898 |a DE-1051 |a DE-573 |a DE-703 |a DE-20 |a DE-355 |a DE-11 | ||
050 | 0 | |a QA76.73.P98 | |
082 | 0 | |a 502.855133 |2 22 | |
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
084 | |a 004 |2 sdnb | ||
100 | 1 | |a Langtangen, Hans Petter |d 1962- |e Verfasser |0 (DE-588)1019109599 |4 aut | |
245 | 1 | 0 | |a Python scripting for computational science |c Hans Petter Langtangen |
250 | |a 3. ed. | ||
264 | 1 | |a Berlin |b Springer |c 2008 | |
300 | |a XXIV, 750 S. |b graph. Darst. |c 235 mm x 155 mm | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
490 | 1 | |a Texts in computational science and engineering |v 3 | |
650 | 4 | |a Datenverarbeitung | |
650 | 4 | |a Naturwissenschaft | |
650 | 4 | |a Python (Computer program language) | |
650 | 4 | |a Science |x Data processing | |
650 | 0 | 7 | |a Wissenschaftliches Rechnen |0 (DE-588)4338507-2 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Python |g Programmiersprache |0 (DE-588)4434275-5 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Wissenschaftliches Rechnen |0 (DE-588)4338507-2 |D s |
689 | 0 | 1 | |a Python |g Programmiersprache |0 (DE-588)4434275-5 |D s |
689 | 0 | |5 DE-604 | |
830 | 0 | |a Texts in computational science and engineering |v 3 |w (DE-604)BV016971315 |9 3 | |
856 | 4 | 2 | |m HBZ Datenaustausch |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=016261214&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-016261214 |
Datensatz im Suchindex
_version_ | 1804137293874724864 |
---|---|
adam_text | Table of Contents
1 Introduction 1
1.1 Scripting versus Traditional Programming 1
1.1.1 Why Scripting is Useful in Computational Science... 2
1.1.2 Classification of Programming Languages 4
1.1.3 Productive Pairs of Programming Languages 5
1.1.4 Gluing Existing Applications G
1.1.5 Scripting Yields Shorter Code 7
1.1.6 Efficiency 8
1.1.7 Type-Specification (Declaration) of Variables 9
1.1.8 Flexible Function Interfaces 11
1.1.9 Interactive Computing 12
1.1.10 Creating Code at Run Time 13
1.1.11 Nested Heterogeneous Data Structures 14
1.1.12 GUI Programming 16
1.1.13 Mixed Language Programming 17
1.1.14 When to Choose a Dynamically Typed Language ... 19
1.1.15 Why Python? . . 20
1.1.16 Script or Program? 21
1.2 Preparations for Working with This Book 22
2 Getting Started with Python Scripting 27
2.1 A Scientific Hello World Script 27
2.1.1 Executing Python Scripts 28
2.1.2 Dissection of the Scientific Hello World Script 29
2.2 Working with Files and Data 32
2.2.1 Problem Specification 32
2.2.2 The Complete Code 33
2.2.3 Dissection 33
2.2.4 Working with Files in Memory 36
2.2.5 Array Computing 37
2.2.6 Interactive Computing and Debugging 39
2.2.7 Efficiency Measurements 42
2.2.8 Exercises 43
2.3 Gluing Stand-Alone Applications 46
2.3.1 The Simulation Code 47
2.3.2 Using Gnuplot to Visualize Curves 49
2.3.3 Functionality of the Script 50
2.3.4 The Complete Code 51
2.3.5 Dissection 53
2.3.6 Exercises 55
2.4 Conducting Numerical Experiments 58
2.4.1 Wrapping a Loop Around Another Script 59
XII Table of Contents
2.4.2 Generating an HTML Report 60
2.4.3 Making Animations 61 :
2.4.4 Varying Any Parameter 63
2.5 File Format Conversion 66
2.5.1 A Simple Read/Write Script 66
2.5.2 Storing Data in Dictionaries and Lists 68
2.5.3 Making a Module with Functions 69
2.5.4 Exercises 71
3 Basic Python 73
3.1 Introductory Topics 74
3.1.1 Recommended Python Documentation 74
3.1.2 Control Statements 75
3.1.3 Running Applications 76
3.1.4 File Reading and Writing 78
3.1.5 Output Formatting 79
3.2 Variables of Different Types 81
3.2.1 Boolean Types 81
3.2.2 The None Variable 82
3.2.3 Numbers and Numerical Expressions 82
3.2.4 Lists and Tuples 84
3.2.5 Dictionaries 90
3.2.6 Splitting and Joining Text 94
3.2.7 String Operations 95
3.2.8 Text Processing 96
3.2.9 The Basics of a Python Class 98
3.2.10 Copy and Assignment 100
3.2.11 Determining a Variable s Type 104
3.2.12 Exercises 106
3.3 Functions 110
3.3.1 Keyword Arguments 111
3.3.2 Doc Strings 112
3.3.3 Variable Number of Arguments 112
3.3.4 Call by Reference 114
3.3.5 Treatment of Input and Output Arguments 115
3.3.6 Function Objects 116
3.4 Working with Files and Directories 117
3.4.1 Listing Files in a Directory 118
3.4.2 Testing File Types 118
3.4.3 Removing Files and Directories 119
3.4.4 Copying and Renaming Files 120
3.4.5 Splitting Pathnames 121
3.4.6 Creating and Moving to Directories 122
3.4.7 Traversing Directory Trees 122
3.4.8 Exercises 125
Table of Contents XIII
4 Numerical Computing in Python 131
4.1 A Quick NumPy Primer 132
4.1.1 Creating Arrays 132
4.1.2 Array Indexing 136
4.1.3 Loops over Arrays 138
4.1.4 Array Computations 139
4.1.5 More Array Functionality 142
4.1.6 Type Testing 144
4.1.7 Matrix Objects 145
4.1.8 Exercises 146
4.2 Vectorized Algorithms 147
4.2.1 Prom Scalar to Array in Function Arguments 147
4.2.2 Slicing 149
4.2.3 Exercises 150
4.3 More Advanced Array Computing 151
4.3.1 Random Numbers 152
4.3.2 Linear Algebra 153
4.3.3 Plotting 154
4.3.4 Example: Curve Fitting 157
4.3.5 Arrays on Structured Grids 159
4.3.6 File I/O with NumPy Arrays 163
4.3.7 Functionality in the Numpyutils Module 165
4.3.8 Exercises 168
4.4 Other Tools for Numerical Computations 173
4.4.1 The ScientificPython Package 173
4.4.2 The SciPy Package 178
4.4.3 The Python-Matlab Interface 183
4.4.4 Symbolic Computing in Python 184
4.4.5 Some Useful Python Modules 186
5 Combining Python with Fortran, C, and C++ 180
5.1 About Mixed Language Programming 189
5.1.1 Applications of Mixed Language Programming 190
5.1.2 Calling C from Python 190
5.1.3 Automatic Generation of Wrapper Code 192
5.2 Scientific Hello World Examples 194
5.2.1 Combining Python and Fortran 195
5.2.2 Combining Python and C 201
5.2.3 Combining Python and C++ Functions 208
5.2.4 Combining Python and C++ Classes 210
5.2.5 Exercises 214
5.3 A Simple Computational Steering Example 215
5.3.1 Modified Time Loop for Repeated Simulations 216
5.3.2 Creating a Python Interface 217
5.3.3 The Steering Python Script 218
5.3.4 Equipping the Steering Script with a GUI 222
5.4 Scripting Interfaces to Large Libraries 223
XIV Table of Contents
6 Introduction to GUI Programming 227
6.1 Scientific Hello World GUI 228
6.1.1 Introductory Topics 228
6.1.2 The First Python/Tkinter Encounter 230
6.1.3 Binding Events 233
6.1.4 Changing the Layout 234
6.1.5 The Final Scientific Hello World GUI 238
6.1.6 An Alternative to Tkinter Variables 240
6.1.7 About the Pack Command 241
6.1.8 An Introduction to the Grid Geometry Manager .... 243
6.1.9 Implementing a GUI as a Class 245
6.1.10 A Simple Graphical Function Evaluator 247
6.1.11 Exercises 248
6.2 Adding GUIs to Scripts 250
6.2.1 A Simulation and Visualization Script with a GUI . . 250
6.2.2 Improving the Layout 253
6.2.3 Exercises 256
6.3 A List of Common Widget Operations 257
6.3.1 Frame 259
6.3.2 Label 260
6.3.3 Button 262
6.3.4 Text Entry 262
6.3.5 Balloon Help 264
6.3.6 Option Menu 265
6.3.7 Slider 265
6.3.8 Check Button 266
6.3.9 Making a Simple Megawidget 266
6.3.10 Menu Bar 267
6.3.11 List Data 269
6.3.12 Listbox 269
6.3.13 Radio Button 272
6.3.14 Combo Box 274
6.3.15 Message Box 275
6.3.16 User-Defined Dialogs 277
6.3.17 Color-Picker Dialogs 278
6.3.18 File Selection Dialogs 279
6.3.19 Toplevel 280
6.3.20 Some Other Types of Widgets 281
6.3.21 Adapting Widgets to the User s Resize Actions 282
6.3.22 Customizing Fonts and Colors 284
6.3.23 Widget Overview 286
6.3.24 Exercises 289
Table of Contents XV
7 Web Interfaces and CGI Programming 295
7.1 Introductory CGI Scripts 296
7.1.1 Web Forms and CGI Scripts 297
7.1.2 Generating Forms in CGI Scripts 299
7.1.3 Debugging CGI Scripts 301
7.1.4 A General Shell Script Wrapper for CGI Scripts .... 302
7.1.5 Security Issues 304
7.2 Adding Web Interfaces to Scripts 306
7.2.1 A Class for Form Parameters 306
7.2.2 Calling Other Programs 308
7.2.3 Running Simulations 309
7.2.4 Getting a CGI Script to Work 311
7.2.5 Using Web Applications from Scripts 313
7.2.6 Exercises 316
8 Advanced Python 319
8.1 Miscellaneous Topics 319
8.1.1 Parsing Command-Line Arguments 319
8.1.2 Platform-Dependent Operations 322
8.1.3 Run-Time Generation of Code 323
8.1.4 Exercises 324
8.2 Regular Expressions and Text Processing 326
8.2.1 Motivation 326
8.2.2 Special Characters 329
8.2.3 Regular Expressions for Real Numbers 331
8.2.4 Using Groups to Extract Parts of a Text 334
8.2.5 Extracting Interval Limits 335
8.2.6 Extracting Multiple Matches 339
8.2.7 Splitting Text 344
8.2.8 Pattern-Matching Modifiers 345
8.2.9 Substitution and Backreferences 347
8.2.10 Example: Swapping Arguments in Function Calls . . . 348
8.2.11 A General Substitution Script 351
8.2.12 Debugging Regular Expressions 353
8.2.13 Exercises 354
8.3 Tools for Handling Data in Files 362
8.3.1 Writing and Reading Python Data Structures 362
8.3.2 Pickling Objects 364
8.3.3 Shelving Objects 366
8.3.4 Writing and Reading Zip and Tar Archive Files 366
8.3.5 Downloading Internet Files 367
8.3.6 Binary Input/Output 368
8.3.7 Exercises 371
8.4 A Database for NuniPy Arrays 371
8.4.1 The Structure of the Database 371
8.4.2 Pickling 374
8.4.3 Formatted ASCII Storage 375
XVI Table of Contents
8.4.4 Shelving 376
8.4.5 Comparing the Various Techniques 377
8.5 Scripts Involving Local and Remote Hosts 378
8.5.1 Secure Shell Commands 378
8.5.2 Distributed Simulation and Visualization 380
8.5.3 Client/Server Programming 382
8.5.4 Threads 382
8.6 Classes 384
8.6.1 Class Programming 384
8.6.2 Checking the Class Type 388
8.6.3 Private Data 389
8.6.4 Static Data 390
8.6.5 Special Attributes 390
8.6.6 Special Methods 391
8.6.7 Multiple Inheritance 392
8.6.8 Using a Class as a C-like Structure 393
8.6.9 Attribute Access via String Names 394
8.6.10 New-Style Classes 394
8.6.11 Implementing Get/Set Functions via Properties 395
8.6.12 Subclassing Built-in Types 396
8.6.13 Building Class Interfaces at Run Time 399
8.6.14 Building Flexible Class Interfaces 403
8.6.15 Exercises 409
8.7 Scope of Variables 413
8.7.1 Global, Local, and Class Variables 413
8.7.2 Nested Functions 415
8.7.3 Dictionaries of Variables in Namespaces 416
8.8 Exceptions 418
8.8.1 Handling Exceptions 419
8.8.2 Raising Exceptions 420
8.9 Iterators 421
8.9.1 Constructing an Iterator 421
8.9.2 A Pointwise Grid Iterator 423
8.9.3 A Vectorized Grid Iterator 427
8.9.4 Generators 428
8.9.5 Some Aspects of Generic Programming 432
8.9.6 Exercises 436
8.10 Investigating Efficiency 437
8.10.1 CPU-Time Measurements 437
8.10.2 Profiling Python Scripts 441
8.10.3 Optimization of Python Code 442
8.10.4 Case Study on Numerical Efficiency 445
Table of Contents XVII
9 Fortran Programming with NumPy Arrays 451
9.1 Problem Definition 451
9.2 Filling an Array in Fortran 453
9.2.1 The Fortran Subroutine 454
9.2.2 Building and Inspecting the Extension Module 455
9.3 Array Storage Issues 457
9.3.1 Generating an Erroneous Interface 457
9.3.2 Array Storage in C and Fortran 459
9.3.3 Input and Output Arrays as Function Arguments . . . 459
9.3.4 F2PY Interface Files 466
9.3.5 Hiding Work Arrays 470
9.4 Increasing Callback Efficiency 470
9.4.1 Callbacks to Vectorized Python Functions 471
9.4.2 Avoiding Callbacks to Python 473
9.4.3 Compiled Inline Callback Functions 474
9.5 Summary 478
9.6 Exercises 479
10 C and C++ Programming with NumPy Arrays .. 483
10.1 Automatic Interfacing of C/C++ Code 484
10.1.1 Using F2PY 485
10.1.2 Using Instant 486
10.1.3 Using Weave 487
10.2 C Programming with NumPy Arrays 488
10.2.1 The Basics of the NumPy C API 489
10.2.2 The Handwritten Extension Code 491
10.2.3 Sending Arguments from Python to C 492
10.2.4 Consistency Checks 493
10.2.5 Computing Array Values 494
10.2.6 Returning an Output Array 496
10.2.7 Convenient Macros 497
10.2.8 Module Initialization 499
10.2.9 Extension Module Template 500
10.2.10 Compiling. Linking, and Debugging the Module 502
10.2.11 Writing a Wrapper for a C Function 503
10.3 C++ Programming with NumPy Arrays 506
10.3.1 Wrapping a NumPy Array in a C++ Object 506
10.3.2 Using SCXX 508
10.3.3 NumPy-C++ Class Conversion 511
10.4 Comparison of the Implementations 519
10.4.1 Efficiency 519
10.4.2 Error Handling 523
10.4.3 Summary 524
10.5 Exercises 525
XVIII Table of Contents
11 More Advanced GUI Programming 529
11.1 Adding Plot Areas in GUIs 529
11.1.1 The BLT Graph Widget 530
11.1.2 Animation of Functions in BLT Graph Widgets 536
11.1.3 Other Tools for Making GUIs with Plots 538
11.1.4 Exercises 539
11.2 Event Bindings 541
11.2.1 Binding Events to Functions with Arguments 542
11.2.2 A Text Widget with Tailored Keyboard Bindings . . . 544
11.2.3 A Fancy List Widget 547
11.3 Animated Graphics with Canvas Widgets 550
11.3.1 The First Canvas Encounter 551
11.3.2 Coordinate Systems 552
11.3.3 The Mathematical Model Class 556
11.3.4 The Planet Class 557
11.3.5 Drawing and Moving Planets 559
11.3.6 Dragging Planets to New Positions 560
11.3.7 Using Pmw s Scrolled Canvas Widget 564
11.4 Simulation and Visualization Scripts 566
11.4.1 Restructuring the Script 567
11.4.2 Representing a Parameter by a Class 569
11.4.3 Improved Command-Line Script 583
11.4.4 Improved GUI Script 584
11.4.5 Improved CGI Script 585
11.4.6 Parameters with Physical Dimensions 586
11.4.7 Adding a Curve Plot Area 588
11.4.8 Automatic Generation of Scripts 589
11.4.9 Applications of the Tools 590
11.4.10 Allowing Physical Units in Input Files 596
11.4.11 Converting Input Files to GUIs 601
12 Tools and Examples 605
12.1 Running Series of Computer Experiments 605
12.1.1 Multiple Values of Input Parameters 606
12.1.2 Implementation Details 609
12.1.3 Further Applications 614
12.2 Tools for Representing Functions 618
12.2.1 Functions Defined by String Formulas 618
12.2.2 A Unified Interface to Functions 623
12.2.3 Interactive Drawing of Functions 629
12.2.4 A Notebook for Selecting Functions 633
12.3 Solving Partial Differential Equations 640
12.3.1 Numerical Methods for ID Wave Equations 641
12.3.2 Implementations of ID Wave Equations 644
12.3.3 Classes for Solving ID Wave Equations 651
12.3.4 A Problem Solving Environment 657
12.3.5 Numerical Methods for 2D Wave Equations 663
Table of Contents XIX
12.3.6 Implementations of 2D Wave Equations 666
12.3.7 Exercises 675
A Setting up the Required Software Environment... 677
A.I Installation on Unix Systems 677
A.1.1 A Suggested Directory Structure 677
A. 1.2 Setting Some Environment Variables 678
A.I.3 Installing Tcl/Tk and Additional Modules 679
A.1.4 Installing Python 680
A.I.5 Installing Python Modules 681
A.1.6 Installing Gnuplot 683
A.I.7 Installing SWIG 684
A. 1.8 Summary of Environment Variables 684
A. 1.9 Testing the Installation of Scripting Utilities 685
A.2 Installation on Windows Systems 685
B Elements of Software Engineering 689
B.I Building and Using Modules 689
B.I.I Single-File Modules 689
B.1.2 Multi-File Modules 693
B.I.3 Debugging and Troubleshooting 694
B.2 Tools for Documenting Python Software 696
B.2.1 Doc Strings 696
B.2.2 Tools for Automatic Documentation 698
B.3 Coding Standards 702
B.3.1 Style Guide 702
B.3.2 Pythonic Programming 706
B.4 Verification of Scripts 711
B.4.1 Automating Regression Tests 711
B.4.2 Implementing a Tool for Regression Tests 715
B.4.3 Writing a Test Script 719
B.4.4 Verifying Output from Numerical Computations .... 720
B.4.5 Automatic Doc String Testing 724
B.4.6 Unit Testing 726
B.5 Version Control Management 728
B.5.1 Mercurial 729
B.5.2 Subversion 732
B.6 Exercises 734
Bibliography 739
Index 741
|
adam_txt |
Table of Contents
1 Introduction 1
1.1 Scripting versus Traditional Programming 1
1.1.1 Why Scripting is Useful in Computational Science. 2
1.1.2 Classification of Programming Languages 4
1.1.3 Productive Pairs of Programming Languages 5
1.1.4 Gluing Existing Applications G
1.1.5 Scripting Yields Shorter Code 7
1.1.6 Efficiency 8
1.1.7 Type-Specification (Declaration) of Variables 9
1.1.8 Flexible Function Interfaces 11
1.1.9 Interactive Computing 12
1.1.10 Creating Code at Run Time 13
1.1.11 Nested Heterogeneous Data Structures 14
1.1.12 GUI Programming 16
1.1.13 Mixed Language Programming 17
1.1.14 When to Choose a Dynamically Typed Language . 19
1.1.15 Why Python? ." ". 20
1.1.16 Script or Program? 21
1.2 Preparations for Working with This Book 22
2 Getting Started with Python Scripting 27
2.1 A Scientific Hello World Script 27
2.1.1 Executing Python Scripts 28
2.1.2 Dissection of the Scientific Hello World Script 29
2.2 Working with Files and Data 32
2.2.1 Problem Specification 32
2.2.2 The Complete Code 33
2.2.3 Dissection 33
2.2.4 Working with Files in Memory 36
2.2.5 Array Computing 37
2.2.6 Interactive Computing and Debugging 39
2.2.7 Efficiency Measurements 42
2.2.8 Exercises 43
2.3 Gluing Stand-Alone Applications 46
2.3.1 The Simulation Code 47
2.3.2 Using Gnuplot to Visualize Curves 49
2.3.3 Functionality of the Script 50
2.3.4 The Complete Code 51
2.3.5 Dissection 53
2.3.6 Exercises 55
2.4 Conducting Numerical Experiments 58
2.4.1 Wrapping a Loop Around Another Script 59
XII Table of Contents
2.4.2 Generating an HTML Report 60
2.4.3 Making Animations 61 :
2.4.4 Varying Any Parameter 63
2.5 File Format Conversion 66
2.5.1 A Simple Read/Write Script 66
2.5.2 Storing Data in Dictionaries and Lists 68
2.5.3 Making a Module with Functions 69
2.5.4 Exercises 71
3 Basic Python 73
3.1 Introductory Topics 74
3.1.1 Recommended Python Documentation 74
3.1.2 Control Statements 75
3.1.3 Running Applications 76
3.1.4 File Reading and Writing 78
3.1.5 Output Formatting 79
3.2 Variables of Different Types 81
3.2.1 Boolean Types 81
3.2.2 The None Variable 82
3.2.3 Numbers and Numerical Expressions 82
3.2.4 Lists and Tuples 84
3.2.5 Dictionaries 90
3.2.6 Splitting and Joining Text 94
3.2.7 String Operations 95
3.2.8 Text Processing 96
3.2.9 The Basics of a Python Class 98
3.2.10 Copy and Assignment 100
3.2.11 Determining a Variable's Type 104
3.2.12 Exercises 106
3.3 Functions 110
3.3.1 Keyword Arguments 111
3.3.2 Doc Strings 112
3.3.3 Variable Number of Arguments 112
3.3.4 Call by Reference 114
3.3.5 Treatment of Input and Output Arguments 115
3.3.6 Function Objects 116
3.4 Working with Files and Directories 117
3.4.1 Listing Files in a Directory 118
3.4.2 Testing File Types 118
3.4.3 Removing Files and Directories 119
3.4.4 Copying and Renaming Files 120
3.4.5 Splitting Pathnames 121
3.4.6 Creating and Moving to Directories 122
3.4.7 Traversing Directory Trees 122
3.4.8 Exercises 125
Table of Contents XIII
4 Numerical Computing in Python 131
4.1 A Quick NumPy Primer 132
4.1.1 Creating Arrays 132
4.1.2 Array Indexing 136
4.1.3 Loops over Arrays 138
4.1.4 Array Computations 139
4.1.5 More Array Functionality 142
4.1.6 Type Testing 144
4.1.7 Matrix Objects 145
4.1.8 Exercises 146
4.2 Vectorized Algorithms 147
4.2.1 Prom Scalar to Array in Function Arguments 147
4.2.2 Slicing 149
4.2.3 Exercises 150
4.3 More Advanced Array Computing 151
4.3.1 Random Numbers 152
4.3.2 Linear Algebra 153
4.3.3 Plotting 154
4.3.4 Example: Curve Fitting 157
4.3.5 Arrays on Structured Grids 159
4.3.6 File I/O with NumPy Arrays 163
4.3.7 Functionality in the Numpyutils Module 165
4.3.8 Exercises 168
4.4 Other Tools for Numerical Computations 173
4.4.1 The ScientificPython Package 173
4.4.2 The SciPy Package 178
4.4.3 The Python-Matlab Interface 183
4.4.4 Symbolic Computing in Python 184
4.4.5 Some Useful Python Modules 186
5 Combining Python with Fortran, C, and C++ 180
5.1 About Mixed Language Programming 189
5.1.1 Applications of Mixed Language Programming 190
5.1.2 Calling C from Python 190
5.1.3 Automatic Generation of Wrapper Code 192
5.2 Scientific Hello World Examples 194
5.2.1 Combining Python and Fortran 195
5.2.2 Combining Python and C 201
5.2.3 Combining Python and C++ Functions 208
5.2.4 Combining Python and C++ Classes 210
5.2.5 Exercises 214
5.3 A Simple Computational Steering Example 215
5.3.1 Modified Time Loop for Repeated Simulations 216
5.3.2 Creating a Python Interface 217
5.3.3 The Steering Python Script 218
5.3.4 Equipping the Steering Script with a GUI 222
5.4 Scripting Interfaces to Large Libraries 223
XIV Table of Contents
6 Introduction to GUI Programming 227
6.1 Scientific Hello World GUI 228
6.1.1 Introductory Topics 228
6.1.2 The First Python/Tkinter Encounter 230
6.1.3 Binding Events 233
6.1.4 Changing the Layout 234
6.1.5 The Final Scientific Hello World GUI 238
6.1.6 An Alternative to Tkinter Variables 240
6.1.7 About the Pack Command 241
6.1.8 An Introduction to the Grid Geometry Manager . 243
6.1.9 Implementing a GUI as a Class 245
6.1.10 A Simple Graphical Function Evaluator 247
6.1.11 Exercises 248
6.2 Adding GUIs to Scripts 250
6.2.1 A Simulation and Visualization Script with a GUI . . 250
6.2.2 Improving the Layout 253
6.2.3 Exercises 256
6.3 A List of Common Widget Operations 257
6.3.1 Frame 259
6.3.2 Label 260
6.3.3 Button 262
6.3.4 Text Entry 262
6.3.5 Balloon Help 264
6.3.6 Option Menu 265
6.3.7 Slider 265
6.3.8 Check Button 266
6.3.9 Making a Simple Megawidget 266
6.3.10 Menu Bar 267
6.3.11 List Data 269
6.3.12 Listbox 269
6.3.13 Radio Button 272
6.3.14 Combo Box 274
6.3.15 Message Box 275
6.3.16 User-Defined Dialogs 277
6.3.17 Color-Picker Dialogs 278
6.3.18 File Selection Dialogs 279
6.3.19 Toplevel 280
6.3.20 Some Other Types of Widgets 281
6.3.21 Adapting Widgets to the User's Resize Actions 282
6.3.22 Customizing Fonts and Colors 284
6.3.23 Widget Overview 286
6.3.24 Exercises 289
Table of Contents XV
7 Web Interfaces and CGI Programming 295
7.1 Introductory CGI Scripts 296
7.1.1 Web Forms and CGI Scripts 297
7.1.2 Generating Forms in CGI Scripts 299
7.1.3 Debugging CGI Scripts 301
7.1.4 A General Shell Script Wrapper for CGI Scripts . 302
7.1.5 Security Issues 304
7.2 Adding Web Interfaces to Scripts 306
7.2.1 A Class for Form Parameters 306
7.2.2 Calling Other Programs 308
7.2.3 Running Simulations 309
7.2.4 Getting a CGI Script to Work 311
7.2.5 Using Web Applications from Scripts 313
7.2.6 Exercises 316
8 Advanced Python 319
8.1 Miscellaneous Topics 319
8.1.1 Parsing Command-Line Arguments 319
8.1.2 Platform-Dependent Operations 322
8.1.3 Run-Time Generation of Code 323
8.1.4 Exercises 324
8.2 Regular Expressions and Text Processing 326
8.2.1 Motivation 326
8.2.2 Special Characters 329
8.2.3 Regular Expressions for Real Numbers 331
8.2.4 Using Groups to Extract Parts of a Text 334
8.2.5 Extracting Interval Limits 335
8.2.6 Extracting Multiple Matches 339
8.2.7 Splitting Text 344
8.2.8 Pattern-Matching Modifiers 345
8.2.9 Substitution and Backreferences 347
8.2.10 Example: Swapping Arguments in Function Calls . . . 348
8.2.11 A General Substitution Script 351
8.2.12 Debugging Regular Expressions 353
8.2.13 Exercises 354
8.3 Tools for Handling Data in Files 362
8.3.1 Writing and Reading Python Data Structures 362
8.3.2 Pickling Objects 364
8.3.3 Shelving Objects 366
8.3.4 Writing and Reading Zip and Tar Archive Files 366
8.3.5 Downloading Internet Files 367
8.3.6 Binary Input/Output 368
8.3.7 Exercises 371
8.4 A Database for NuniPy Arrays 371
8.4.1 The Structure of the Database 371
8.4.2 Pickling 374
8.4.3 Formatted ASCII Storage 375
XVI Table of Contents
8.4.4 Shelving 376
8.4.5 Comparing the Various Techniques 377
8.5 Scripts Involving Local and Remote Hosts 378
8.5.1 Secure Shell Commands 378
8.5.2 Distributed Simulation and Visualization 380
8.5.3 Client/Server Programming 382
8.5.4 Threads 382
8.6 Classes 384
8.6.1 Class Programming 384
8.6.2 Checking the Class Type 388
8.6.3 Private Data 389
8.6.4 Static Data 390
8.6.5 Special Attributes 390
8.6.6 Special Methods 391
8.6.7 Multiple Inheritance 392
8.6.8 Using a Class as a C-like Structure 393
8.6.9 Attribute Access via String Names 394
8.6.10 New-Style Classes 394
8.6.11 Implementing Get/Set Functions via Properties 395
8.6.12 Subclassing Built-in Types 396
8.6.13 Building Class Interfaces at Run Time 399
8.6.14 Building Flexible Class Interfaces 403
8.6.15 Exercises 409
8.7 Scope of Variables 413
8.7.1 Global, Local, and Class Variables 413
8.7.2 Nested Functions 415
8.7.3 Dictionaries of Variables in Namespaces 416
8.8 Exceptions 418
8.8.1 Handling Exceptions 419
8.8.2 Raising Exceptions 420
8.9 Iterators 421
8.9.1 Constructing an Iterator 421
8.9.2 A Pointwise Grid Iterator 423
8.9.3 A Vectorized Grid Iterator 427
8.9.4 Generators 428
8.9.5 Some Aspects of Generic Programming 432
8.9.6 Exercises 436
8.10 Investigating Efficiency 437
8.10.1 CPU-Time Measurements 437
8.10.2 Profiling Python Scripts 441
8.10.3 Optimization of Python Code 442
8.10.4 Case Study on Numerical Efficiency 445
Table of Contents XVII
9 Fortran Programming with NumPy Arrays 451
9.1 Problem Definition 451
9.2 Filling an Array in Fortran 453
9.2.1 The Fortran Subroutine 454
9.2.2 Building and Inspecting the Extension Module 455
9.3 Array Storage Issues 457
9.3.1 Generating an Erroneous Interface 457
9.3.2 Array Storage in C and Fortran 459
9.3.3 Input and Output Arrays as Function Arguments . . . 459
9.3.4 F2PY Interface Files 466
9.3.5 Hiding Work Arrays 470
9.4 Increasing Callback Efficiency 470
9.4.1 Callbacks to Vectorized Python Functions 471
9.4.2 Avoiding Callbacks to Python 473
9.4.3 Compiled Inline Callback Functions 474
9.5 Summary 478
9.6 Exercises 479
10 C and C++ Programming with NumPy Arrays . 483
10.1 Automatic Interfacing of C/C++ Code 484
10.1.1 Using F2PY 485
10.1.2 Using Instant 486
10.1.3 Using Weave 487
10.2 C Programming with NumPy Arrays 488
10.2.1 The Basics of the NumPy C API 489
10.2.2 The Handwritten Extension Code 491
10.2.3 Sending Arguments from Python to C 492
10.2.4 Consistency Checks 493
10.2.5 Computing Array Values 494
10.2.6 Returning an Output Array 496
10.2.7 Convenient Macros 497
10.2.8 Module Initialization 499
10.2.9 Extension Module Template 500
10.2.10 Compiling. Linking, and Debugging the Module 502
10.2.11 Writing a Wrapper for a C Function 503
10.3 C++ Programming with NumPy Arrays 506
10.3.1 Wrapping a NumPy Array in a C++ Object 506
10.3.2 Using SCXX 508
10.3.3 NumPy-C++ Class Conversion 511
10.4 Comparison of the Implementations 519
10.4.1 Efficiency 519
10.4.2 Error Handling 523
10.4.3 Summary 524
10.5 Exercises 525
XVIII Table of Contents
11 More Advanced GUI Programming 529
11.1 Adding Plot Areas in GUIs 529
11.1.1 The BLT Graph Widget 530
11.1.2 Animation of Functions in BLT Graph Widgets 536
11.1.3 Other Tools for Making GUIs with Plots 538
11.1.4 Exercises 539
11.2 Event Bindings 541
11.2.1 Binding Events to Functions with Arguments 542
11.2.2 A Text Widget with Tailored Keyboard Bindings . . . 544
11.2.3 A Fancy List Widget 547
11.3 Animated Graphics with Canvas Widgets 550
11.3.1 The First Canvas Encounter 551
11.3.2 Coordinate Systems 552
11.3.3 The Mathematical Model Class 556
11.3.4 The Planet Class 557
11.3.5 Drawing and Moving Planets 559
11.3.6 Dragging Planets to New Positions 560
11.3.7 Using Pmw's Scrolled Canvas Widget 564
11.4 Simulation and Visualization Scripts 566
11.4.1 Restructuring the Script 567
11.4.2 Representing a Parameter by a Class 569
11.4.3 Improved Command-Line Script 583
11.4.4 Improved GUI Script 584
11.4.5 Improved CGI Script 585
11.4.6 Parameters with Physical Dimensions 586
11.4.7 Adding a Curve Plot Area 588
11.4.8 Automatic Generation of Scripts 589
11.4.9 Applications of the Tools 590
11.4.10 Allowing Physical Units in Input Files 596
11.4.11 Converting Input Files to GUIs 601
12 Tools and Examples 605
12.1 Running Series of Computer Experiments 605
12.1.1 Multiple Values of Input Parameters 606
12.1.2 Implementation Details 609
12.1.3 Further Applications 614
12.2 Tools for Representing Functions 618
12.2.1 Functions Defined by String Formulas 618
12.2.2 A Unified Interface to Functions 623
12.2.3 Interactive Drawing of Functions 629
12.2.4 A Notebook for Selecting Functions 633
12.3 Solving Partial Differential Equations 640
12.3.1 Numerical Methods for ID Wave Equations 641
12.3.2 Implementations of ID Wave Equations 644
12.3.3 Classes for Solving ID Wave Equations 651
12.3.4 A Problem Solving Environment 657
12.3.5 Numerical Methods for 2D Wave Equations 663
Table of Contents XIX
12.3.6 Implementations of 2D Wave Equations 666
12.3.7 Exercises 675
A Setting up the Required Software Environment. 677
A.I Installation on Unix Systems 677
A.1.1 A Suggested Directory Structure 677
A. 1.2 Setting Some Environment Variables 678
A.I.3 Installing Tcl/Tk and Additional Modules 679
A.1.4 Installing Python 680
A.I.5 Installing Python Modules 681
A.1.6 Installing Gnuplot 683
A.I.7 Installing SWIG 684
A. 1.8 Summary of Environment Variables 684
A. 1.9 Testing the Installation of Scripting Utilities 685
A.2 Installation on Windows Systems 685
B Elements of Software Engineering 689
B.I Building and Using Modules 689
B.I.I Single-File Modules 689
B.1.2 Multi-File Modules 693
B.I.3 Debugging and Troubleshooting 694
B.2 Tools for Documenting Python Software 696
B.2.1 Doc Strings 696
B.2.2 Tools for Automatic Documentation 698
B.3 Coding Standards 702
B.3.1 Style Guide 702
B.3.2 Pythonic Programming 706
B.4 Verification of Scripts 711
B.4.1 Automating Regression Tests 711
B.4.2 Implementing a Tool for Regression Tests 715
B.4.3 Writing a Test Script 719
B.4.4 Verifying Output from Numerical Computations . 720
B.4.5 Automatic Doc String Testing 724
B.4.6 Unit Testing 726
B.5 Version Control Management 728
B.5.1 Mercurial 729
B.5.2 Subversion 732
B.6 Exercises 734
Bibliography 739
Index 741 |
any_adam_object | 1 |
any_adam_object_boolean | 1 |
author | Langtangen, Hans Petter 1962- |
author_GND | (DE-588)1019109599 |
author_facet | Langtangen, Hans Petter 1962- |
author_role | aut |
author_sort | Langtangen, Hans Petter 1962- |
author_variant | h p l hp hpl |
building | Verbundindex |
bvnumber | BV023057948 |
callnumber-first | Q - Science |
callnumber-label | QA76 |
callnumber-raw | QA76.73.P98 |
callnumber-search | QA76.73.P98 |
callnumber-sort | QA 276.73 P98 |
callnumber-subject | QA - Mathematics |
classification_rvk | ST 250 |
ctrlnum | (OCoLC)890619901 (DE-599)DNB984787461 |
dewey-full | 502.855133 |
dewey-hundreds | 500 - Natural sciences and mathematics |
dewey-ones | 502 - Miscellany |
dewey-raw | 502.855133 |
dewey-search | 502.855133 |
dewey-sort | 3502.855133 |
dewey-tens | 500 - Natural sciences and mathematics |
discipline | Allgemeine Naturwissenschaft Informatik |
discipline_str_mv | Allgemeine Naturwissenschaft Informatik |
edition | 3. ed. |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>02102nam a2200529 cb4500</leader><controlfield tag="001">BV023057948</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20081027 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">071219s2008 gw d||| |||| 00||| eng d</controlfield><datafield tag="015" ind1=" " ind2=" "><subfield code="a">07,N30,0048</subfield><subfield code="2">dnb</subfield></datafield><datafield tag="016" ind1="7" ind2=" "><subfield code="a">984787461</subfield><subfield code="2">DE-101</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9783540739159</subfield><subfield code="c">Gb. : ca. sfr 87.00 (freier Pr.)</subfield><subfield code="9">978-3-540-73915-9</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">3540739157</subfield><subfield code="c">Gb. : ca. sfr 87.00 (freier Pr.)</subfield><subfield code="9">3-540-73915-7</subfield></datafield><datafield tag="024" ind1="3" ind2=" "><subfield code="a">9783540739159</subfield></datafield><datafield tag="028" ind1="5" ind2="2"><subfield code="a">12098613</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)890619901</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)DNB984787461</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rakddb</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">gw</subfield><subfield code="c">XA-DE-BE</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-898</subfield><subfield code="a">DE-1051</subfield><subfield code="a">DE-573</subfield><subfield code="a">DE-703</subfield><subfield code="a">DE-20</subfield><subfield code="a">DE-355</subfield><subfield code="a">DE-11</subfield></datafield><datafield tag="050" ind1=" " ind2="0"><subfield code="a">QA76.73.P98</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">502.855133</subfield><subfield code="2">22</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">004</subfield><subfield code="2">sdnb</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Langtangen, Hans Petter</subfield><subfield code="d">1962-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1019109599</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Python scripting for computational science</subfield><subfield code="c">Hans Petter Langtangen</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">3. ed.</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Berlin</subfield><subfield code="b">Springer</subfield><subfield code="c">2008</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">XXIV, 750 S.</subfield><subfield code="b">graph. Darst.</subfield><subfield code="c">235 mm x 155 mm</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="490" ind1="1" ind2=" "><subfield code="a">Texts in computational science and engineering</subfield><subfield code="v">3</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Datenverarbeitung</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Naturwissenschaft</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Python (Computer program language)</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Science</subfield><subfield code="x">Data processing</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Wissenschaftliches Rechnen</subfield><subfield code="0">(DE-588)4338507-2</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Python</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4434275-5</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Wissenschaftliches Rechnen</subfield><subfield code="0">(DE-588)4338507-2</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">Python</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4434275-5</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="830" ind1=" " ind2="0"><subfield code="a">Texts in computational science and engineering</subfield><subfield code="v">3</subfield><subfield code="w">(DE-604)BV016971315</subfield><subfield code="9">3</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">HBZ Datenaustausch</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=016261214&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-016261214</subfield></datafield></record></collection> |
id | DE-604.BV023057948 |
illustrated | Illustrated |
index_date | 2024-07-02T19:27:31Z |
indexdate | 2024-07-09T21:10:00Z |
institution | BVB |
isbn | 9783540739159 3540739157 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-016261214 |
oclc_num | 890619901 |
open_access_boolean | |
owner | DE-898 DE-BY-UBR DE-1051 DE-573 DE-703 DE-20 DE-355 DE-BY-UBR DE-11 |
owner_facet | DE-898 DE-BY-UBR DE-1051 DE-573 DE-703 DE-20 DE-355 DE-BY-UBR DE-11 |
physical | XXIV, 750 S. graph. Darst. 235 mm x 155 mm |
publishDate | 2008 |
publishDateSearch | 2008 |
publishDateSort | 2008 |
publisher | Springer |
record_format | marc |
series | Texts in computational science and engineering |
series2 | Texts in computational science and engineering |
spelling | Langtangen, Hans Petter 1962- Verfasser (DE-588)1019109599 aut Python scripting for computational science Hans Petter Langtangen 3. ed. Berlin Springer 2008 XXIV, 750 S. graph. Darst. 235 mm x 155 mm txt rdacontent n rdamedia nc rdacarrier Texts in computational science and engineering 3 Datenverarbeitung Naturwissenschaft Python (Computer program language) Science Data processing Wissenschaftliches Rechnen (DE-588)4338507-2 gnd rswk-swf Python Programmiersprache (DE-588)4434275-5 gnd rswk-swf Wissenschaftliches Rechnen (DE-588)4338507-2 s Python Programmiersprache (DE-588)4434275-5 s DE-604 Texts in computational science and engineering 3 (DE-604)BV016971315 3 HBZ Datenaustausch application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=016261214&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Langtangen, Hans Petter 1962- Python scripting for computational science Texts in computational science and engineering Datenverarbeitung Naturwissenschaft Python (Computer program language) Science Data processing Wissenschaftliches Rechnen (DE-588)4338507-2 gnd Python Programmiersprache (DE-588)4434275-5 gnd |
subject_GND | (DE-588)4338507-2 (DE-588)4434275-5 |
title | Python scripting for computational science |
title_auth | Python scripting for computational science |
title_exact_search | Python scripting for computational science |
title_exact_search_txtP | Python scripting for computational science |
title_full | Python scripting for computational science Hans Petter Langtangen |
title_fullStr | Python scripting for computational science Hans Petter Langtangen |
title_full_unstemmed | Python scripting for computational science Hans Petter Langtangen |
title_short | Python scripting for computational science |
title_sort | python scripting for computational science |
topic | Datenverarbeitung Naturwissenschaft Python (Computer program language) Science Data processing Wissenschaftliches Rechnen (DE-588)4338507-2 gnd Python Programmiersprache (DE-588)4434275-5 gnd |
topic_facet | Datenverarbeitung Naturwissenschaft Python (Computer program language) Science Data processing Wissenschaftliches Rechnen Python Programmiersprache |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=016261214&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
volume_link | (DE-604)BV016971315 |
work_keys_str_mv | AT langtangenhanspetter pythonscriptingforcomputationalscience |