Python Scripts¶
General Idea¶
You have seen the typical steps in an analysis: reading the data,
manipulating arrays, fitting and plotting. In order that you do not have
to always type in everything you can type all the commands into a simple
text file using your favored editor, save it with the extension
.py
and then execute it with the command run
or %run
.
In general all that you can type into ipython at the prompt, can
also be stored in a file. This file is called a script
or, more
precise, a python script
. It is basically a program.
A simple script for a few things you did in this short introduction looks like:
# import the toolbox and call it B
import LT.box as B
# read the data
mf = B.get_file('my_exp_1.data')
# get the data into arrays
t = mf['time']
dexp = mf['dist']
derr = mf['d_err']
# print the values in a for loop
for i, D in enumerate(dexp):
# indentation is important
print( 'time = ', t[i], 'distance = ', D, 'error = ', derr[i] )
# end of the loop = end of indentation
# plot the data
B.plot_exp(t, dexp, derr)
# fit a line
fit = B.linefit(t, dexp, derr)
# draw the fit result
B.plot_line(fit.xpl, fit.ypl)
# add the labels
B.pl.xlabel('t (sec)')
B.pl.ylabel('Distance (m)')
B.pl.title('Distance vs time exp.')
# save the plot
B.pl.savefig('my_plot.pdf')
# print the covariance matrix:
print( "The Covariance Matrix is : ", fit.cov )
You would run it by doing
In [119]: run analysis.py
If the plot does not show after a short while you need to enter
In [120]: run analysis.py
In [121]: B.pl.show().
You could for example place the entire analysis of an experiment in one python script. If you need to change something all you have to do in that case is change the corresponding part and run it again.
You can find a few examples in the file:
examples.tar.gz
.
Problems you might encounter¶
It is important to realize that when you run a script, what happens inside the script is it’s own python session. So if your script is as follows:
x = array( [1.,2.,3.,4] )
print( x )
save it as try.py
and then you do
In [122]: run try.py
you will get
In [122]: run try.py
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
/Users/boeglinw/Documents/teaching/Classes/phy-3106L/python/sphinx/pyplots/try.py in <module>()
----> 1
2
3 x = array([1,2,3,4,5])
4 print( x )
5
NameError: name 'array' is not defined
WARNING: Failure executing file: <try.py>
This means that python does not know what an array
is. This is
part of numpy and therefore you must import
it (see
loading modules).
So your script should look like:
import numpy as np # import numpy and call is np
x = np.array( [1.,2.,3.,4] ) # use the array object of np
print( x )
Then the output will be
In [123]: run try.py
[1 2 3 4 5]
If you want to be able to use the functions as in the interactive sessions you need to import things as follows:
from matplotlib.pylab import *
This is however not recommended. You should know from which software package a function comes in order to know exactly what it is doing and how to use it. I therefore recommend to do the following
import numpy as np # for math (all names start with np.)
import matplotlib.pyplot as pl # for plotting (all plot
# functions start with pl.
If you use trigonometric and other functions remember they
often act on whole arrays, each element at a time, so you need to use
the numpy functions e.g. np.sin
, np.cos
, np.arctan
,
np.log
etc. Check the numpy documentation for all the details