Python modules

There a several modules which are already included in the standard Python distribution:

Other modules have to be installed separately, e.g. Numpy, Scipy, Pylab, IPython.

Some distributions including precompiled modules are available, e.g.

It is important to know where to find the functions that you need. We will go through some useful examples.

At ZMAW

Remember to apply

module load Python

to configure the Unix environment for the most recent versions.

Numpy, Scipy, Pylab and IPython

Numpy

Numpy is the core library for multidimensional array objects (ndarray) and linear algebra. Most other scientific modules use the numpy array object. Numpy arrays and standard Python sequences have important differences:

The User's guide PDF provides a good introduction.

Scipy

The Scipy module is built on Numpy and offers a collection of mathematical algorithms such as

Furthermore it includes very handy routines for data input and output of binary and ASCII-tables, Matlab and Netcdf data files

Pylab

Pylab (aka Matplotlib) uses Numpy and Scipy and offers high-level functions that are similar in the name and syntax to those offered by Matlab. Matplotlib is the name of the core library and pylab provides the Matlab similarity. Pylab produces figures of great quality suitable for publications.

Making plots is easy. Start reading the User's guide. For a specific problem look at the Gallery for a similar plot you would like to have and learn from the source code.

IPython

IPython is an environment for interactive and exploratory computing. Useful features are TAB-completion, magic commands, e.g. %run, %whos, input cache and many more convenient functions that are not available in the standard Python shell.

Importing the scientific environment

The statement

from pylab import *

imports the most important functions/objects for numerical computation and plotting. When using the interactive IPyhon shell this import is already done with

ipython -pylab

For more complex applications it is useful but not necessary to follow the conventions that the community has adopted:

   1 import numpy as np
   2 import scipy as sp
   3 import matplotlib as mpl
   4 import matplotlib.pyplot as plt

Arrays

Numpy provides a multidimensional array data type. An array can hold arbitrary Python objects but usually they are used for N-dimensional numeric data types.

Array creation

Arrays can also be created from special functions, e.g. random

Array indexing

Example and exercise

Write two programs, a test and a plotting program. The test program shall create a simulated dataset and the plotting routine shall read and display the data on the screen.

We start with a simple linear relation of two variables x and y. The measurement y shall be influenced by noise with a Gaussian distribution.

Generate test data

We first would like to generate x including 11 numbers in the intervall [-5,5]

x=linspace(-5,5,11)

The variable y depends on x and includes the random noise

y=x+randn(x.size)

We write both variables in a file

save('data.txt',(x,y))

Now we combine this in a script. First we open an editor from the IPython shell

!nedit generate_test_data.py &

Create a new file, copy and paste the sourcode, and save (Ctrl-S).

   1 from pylab import *
   2 
   3 x=linspace(-5,5,11)
   4 y=x+randn(x.size)
   5 save('data.txt',(x,y))
   6 print('Finished!')

Now you can run the script from IPython

In [7]: run generate_test_data.py
Finished!

What happens if you leave out the first line (from pylab import *)?

Plot test data

The following code can be used as a template

   1 from pylab import *
   2 
   3 x,y=load('data.txt')
   4 
   5 figure() # Opens a new window for plotting
   6 plot(x,y,'ko') # Plots the data
   7 show() # Displays the result on the screen
   8 savefig('plot.pdf') # Saves the plot on disc

Exercise

Hints:

Links and References

LehreWiki: OpenSource2010/Lesson3 (last edited 2010-11-01 14:03:52 by anonymous)