The latest version of this IPython notebook is available at http://github.com/jckantor/ESTM60203 for noncommercial use under terms of the Creative Commons Attribution Noncommericial ShareAlike License (CC BY-NC-SA 4.0).

J.C. Kantor ([email protected])

Getting Started with IPython

The purpose of this IPython notebook is to get you started in using Python (actually, the interactive variant called IPython)calculations assuming this is your first exposure to Python.

Initializations

In [1]:
from IPython.core.display import HTML
HTML(open("styles/custom.css", "r").read())
Out[1]:

Step 0: Install IPython

The first step is to obtain a working IPython environment. The easiest approach is to sign up for a free account on a cloud-based service such as Wakari.io. You'll need internet connectivity to access your work, but there's nothing to install, no software to maintain, and you can work with nothing more than a browser on a Chromebook or tablet.

Alternatively, you can install an IPython environment on your laptop. There are at least two excellent and free packages available:

There are differences between these packages, particularly in the methods used to download and maintain additional Python libraries. In both cases the process for downloading and installing the software are well documented and easy to follow. You should allow about 10-30 minutes for the installation depending on your experience and connection speed.

After installing, be sure to check for updates before proceeding further. With the Anaconda package this is done by executing the following two commands in a terminal window:

> conda update conda
> conda update anaconda

Step 1: Start an IPython Notebook Session

IPython notebooks (like this one) are simply files in a directory with a .ipynb suffix. They can be stored in any directory, including a Dropbox or Google Drive directory.

To start a notebook session, open a terminal window and navigate to the directory where you will be keeping your notebooks. Then execute the following statement at the command line:

> ipython notebook --pylab=inline

The terminal window will show information indicating start up of an ipython session, then browser window will open listing notebooks in your current directory. At this point your options are

  • select one of your existing notebooks to work on,
  • start a new notebook by clicking on the New Notebook button, or
  • import a notebook from another directory by dragging it onto the list of notebooks.

An IPython notebook consists of cells that hold headings, text, or python code. The user interface is relatively self-explanatory. Take a few minutes now to open, rename, and save a new notebook.

Here's a quick overview of IPython notebooks prepared by the team that created the software.

In [2]:
from IPython.display import YouTubeVideo
YouTubeVideo("H6dLGQw9yFQ",560,315)
Out[2]:

Step 2: Experiment with Python

Python is an elegant and modern language for programming and problem solving that has found increasing use by engineers and scientists. In the next few cells we'll demonstrate some basic Python functionality.

Basic Arithmetic Operations

Basic arithmetic functions

In [1]:
a = 12
b = 2
print "a + b = ", a + b
print "a**b = ", a**b
print "a/b = ", a/b
a + b =  14
a**b =  144
a/b =  6

Calling a builtin function

In [2]:
sin(2*pi)
Out[2]:
-2.4492935982947064e-16

Working with Lists

Lists are a versatile way of organizing your data in Python. Here are some examples, more can be found on this Khan Academy video.

In [3]:
xList = [1, 2, 3, 4]
print xList
[1, 2, 3, 4]
In [4]:
# Concatenation

x = [1, 2, 3, 4];
y = [5, 6, 7, 8];

x + y
Out[4]:
[1, 2, 3, 4, 5, 6, 7, 8]
In [5]:
# Two ways to sum a list of numbers

print sum(x)
print reduce(add,x)
10
10
In [6]:
# Two ways to add a two lists of numbers

print add(x,y)
print map(add,x,y)
[ 6  8 10 12]
[6, 8, 10, 12]

A for loop is a means for iterating over the elements of a list. The colon marks the start of code that will be executed for each element of a list. Indenting has meaning in Python. In this case, everything in the indented block will be executed on each iteration of the for loop.

In [7]:
for x in xList:
    print "x =",x, "    sin(x) = ", sin(x)
x = 1     sin(x) =  0.841470984808
x = 2     sin(x) =  0.909297426826
x = 3     sin(x) =  0.14112000806
x = 4     sin(x) =  -0.756802495308

Working with dictionaries

Dictionaries are useful for storing and retrieving data as key-value pairs. For example, here is a short dictionary of molar masses. The keys are molecular formulas, and the values are the corresponding molar masses.

In [8]:
mw = {'CH4': 16.04, 'H2O': 18.02, 'O2':32.00, 'CO2': 44.01}
print mw
{'H2O': 18.02, 'CO2': 44.01, 'CH4': 16.04, 'O2': 32.0}

We can a value to an existing dictionary.

In [9]:
mw['C8H18'] = 114.23
print mw
{'H2O': 18.02, 'CO2': 44.01, 'CH4': 16.04, 'O2': 32.0, 'C8H18': 114.23}

We can retrieve a value from a dictionary.

In [10]:
mw['CH4']
Out[10]:
16.04

A for loop is a useful means of interating over all key-value pairs of a dictionary.

In [11]:
for species in mw.keys():
    print "The molar mass of {:<s} is {:<7.2f}".format(species, mw[species])
The molar mass of H2O is 18.02  
The molar mass of CO2 is 44.01  
The molar mass of CH4 is 16.04  
The molar mass of O2 is 32.00  
The molar mass of C8H18 is 114.23 

Dictionaries can be sorted by key or by value

In [12]:
for species in sorted(mw):
    print " {:<8s}  {:>7.2f}".format(species, mw[species])
 C8H18      114.23
 CH4         16.04
 CO2         44.01
 H2O         18.02
 O2          32.00
In [13]:
for species in sorted(mw, key = mw.get):
    print " {:<8s}  {:>7.2f}".format(species, mw[species])
 CH4         16.04
 H2O         18.02
 O2          32.00
 CO2         44.01
 C8H18      114.23

Plotting

IPython notebooks include plotting functionality very similar to Matlab's. Here are some examples.

In [14]:
x = linspace(0,10)
y = sin(x)
z = cos(x)
plot(x,y,'b',x,z,'r')
xlabel('Radians');
ylabel('Value');
title('Plotting Demonstration')
legend(['Sin','Cos'])
grid()
In [15]:
plot(y,z)
axis('equal')
Out[15]:
(-1.0, 1.0, -1.0, 1.0)
In [16]:
subplot(2,1,1)
plot(x,y)
title('Sin(x)')

subplot(2,1,2)
plot(x,z)
title('Cos(x)')
Out[16]:
<matplotlib.text.Text at 0x10808ea50>

Step 3: Solve Equations using Sympy

One of the best features of Python is the ability to extend it's functionality by importing special purpose libraries of functions. Here we demonstrate the use of a symbolic algebra package Sympy for routine problem solving.

In [17]:
import sympy as sym

sym.var('P V n R T');

# Gas constant
R = 8.314        # J/K/gmol
R = R * 1000     # J/K/kgmol

# Moles of air
mAir = 1         # kg
mwAir = 28.97    # kg/kg-mol
n = mAir/mwAir   # kg-mol

# Temperature
T = 298

# Equation
eqn = sym.Eq(P*V,n*R*T)

# Solve for P and select the first solution
f = sym.solve(eqn,P)[0]

# Use the sympy plot function to plot
sym.plot(f,(V,1,10),xlabel='Volume m**3',ylabel='Pressure Pa')
Out[17]:
<sympy.plotting.plot.Plot at 0x108f05750>

Step 4: Learn More

Python offers a full range of programming language features, and there is a seemingly endless range of packages for scientific and engineering computations. Here are some suggestions on places you can go for more information on programming

Interative learning

On-line tutorials, books, etc.

Books

Official documentation, examples, and galleries.

Engineering applications

In [ ]: